featureLayer에서 모든 기능을 삭제하는 올바른 방법은 무엇입니까


10

나는 그것을 가지고 있고 featureLayer그것을 죽이고 다른 것을 만들고 싶지 않습니다. 현재 featureLayer에서 모든 기능을 삭제하고 싶습니다. 내가 사용할 수 있다는 것을 발견 applyEdits방법을하지만, 그것을 사용하기 위해 나는 모든 내가 삭제하려는 기능이 필요합니다. 별도로 저장하고 싶지는 않습니다. ArcGIS Javascript API를 사용할 때 featureLayer를 비우는 더 좋은 방법을 알고 있습니까?

답변:


3

Kirk가 제안한대로 featureLayer.selectFeatures ()를 사용하여 모든 기능을 반환하는 where 절을 사용하십시오. 모든 기능을 갖춘 후에는 해당 기능을 삭제로 applyEdits ()에 전달하십시오.


클라이언트에게 많은 기능을 제공하지 않습니까? 이것이 큰 데이터 세트 인 경우 실제로 느려질 수 있습니다.
커크 Kuykendall

2
유일한 문제는 올바른 where 절을 지정할 수 없다는 것입니다- "1 = 1", "OBJECTID> 0"등을 시도했습니다. 그러나 오류가 발생할 때마다 "FeatureLayer :: selectFeatures-하나 이상의 지원되지 않는 매개 변수가 쿼리에 포함됩니다" ". 코드 var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (query, ...);
Kirill Lykov 2016 년

기능 계층이 기능 서비스와 연결되지 않은 경우 where 절을 지원하지 않습니다. 어떻게 생각해?
Kirill Lykov 2016 년

"특징 계층이 기능 서비스와 연결되어 있지 않으면 where 절을 지원하지 않습니다."-맞지만, 편집 기능도 지원하지 않습니다. API를 참조에서 "기본 계층 있다면 ... 지형지 서비스에서, 그것의 기능은 편집 할 수있다", 당신의 featureLayer이 기능을 서비스에 연결되어 있는지 암시
스티븐 리드

"편집도 지원하지 않습니다"-서비스와 연결되어 있지 않아도 편집을 지원합니다. Hovewer, 나는 몇 가지 해결 방법을 만들어야했습니다.
Kirill Lykov 2016 년

4

where 절 "1 = 1"또는 이와 유사한 것을 사용 하여 REST delete 기능 호출을 시도하십시오 .


1
안녕하세요 REST 삭제 기능 호출에 대한 구문이 있습니까? 내가 그 일을 시도하는 동안 나에게 예를 제공 할 수 있습니까
jonleech

1

클라이언트 측 (서버 측 URL 없음)에서 기능 계층을 작성한 경우 where 절과 함께 조회를 사용할 수 없습니다. 지도의 범위를 검색 한 다음 찾은 모든 항목을 삭제하여이 문제를 해결할 수있었습니다. 예를 들면 다음과 같습니다.

function removeAllLayerFeatures(map, layer) {
    require(['esri/tasks/query', 'esri/layers/FeatureLayer'], function (Query, FeatureLayer) {
        var query = new Query();
        query.geometry = map.extent;
        layer.selectFeatures(query, FeatureLayer.SELECTION_NEW, function (results) {
            for (var key in results) {
                layer.remove(results[key]);
            }
        });
    });
}


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.