jaki jest właściwy sposób na usunięcie wszystkich funkcji z featureLayer

10

Mam featureLayeri nie chcę go zabijać i tworzyć kolejnego. Chcę usunąć wszystkie funkcje z bieżącej funkcji FeatureLayer. Odkryłem, że mogę użyć applyEditsmetody, ale aby z niej skorzystać, muszę mieć wszystkie funkcje, które chcę usunąć. Chociaż nie chcę ich przechowywać osobno. Czy znasz lepszy sposób na opróżnienie mojej funkcji FeatureLayer podczas korzystania z ArcGIS Javascript API?

Kirill Lykov
źródło

Odpowiedzi:

3

Użyj featureLayer.selectFeatures () z, zgodnie z sugestią Kirka, klauzulą ​​where, która zwróci wszystkie twoje funkcje. Gdy masz już wszystkie swoje funkcje, przekaż je do funkcji applyEdits () podczas usuwania.

Derek Swingley
źródło
Czy to nie zwróci klientowi wielu funkcji? Jeśli jest to duży zestaw danych, może być naprawdę powolny.
Kirk Kuykendall
2
Jedyny problem polega na tym, że nie mogę określić, gdzie klauzula - próbowałem „1 = 1”, „OBJECTID> 0” itd. Ale za każdym razem, gdy pojawia się błąd „FeatureLayer :: selectFeatures - zapytanie zawiera jeden lub więcej nieobsługiwanych parametrów „. Kod var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (zapytanie, ...);
Kirill Lykov
Być może, jeśli Featurelayer nie jest połączony z żadną usługą, nie obsługuje klauzul gdzie. Co myślisz?
Kirill Lykov
„jeśli Featurelayer nie jest połączony z żadną usługą funkcji, nie obsługuje tam, gdzie są klauzule” - to prawda, ale jeśli tak, to nie obsługuje edycji. Z referencji API: „Jeśli warstwa podstawowa ... pochodzi z usługi Feature Feature, jej funkcje można edytować”, co oznacza, że ​​twoja funkcja FeatureLayer JEST połączona z usługą Feature
Stephen Lead
„nie obsługuje także edycji” - obsługuję edycję, nawet jeśli nie jest związana z usługą. Jednak musiałem dokonać pewnych obejść.
Kirill Lykov
4

Spróbuj wykonać wywołanie funkcji usuwania REST z klauzulą ​​where „1 = 1” lub coś podobnego.

Kirk Kuykendall
źródło
1
cześć, czy istnieje jakaś składnia wywołania funkcji usuwania REST? czy możesz podać mi przykład, gdy próbuję to zrobić
jonleech,
1

Jeśli utworzono warstwę funkcji po stronie klienta (bez adresu URL po stronie serwera), nie można użyć zapytania z klauzulą ​​where. Byłem w stanie to obejść, przeszukując zasięg mapy, a następnie usuwając wszystkie znalezione przedmioty. Na przykład:

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]);
            }
        });
    });
}
Chris
źródło
0

Sprawdź metodę clear () :

Czyści całą grafikę.

featureLayer.clear();
Leniel Maccaferri
źródło
-2

Użyj kursora aktualizacji , wybierając wszystkie funkcje („*”).

Użyj IFeature.Delete () i zapisz po zakończeniu .

ujjwalesri
źródło
To pytanie dotyczy rozwiązania JavaScript, a nie ArcObjects.
Derek Swingley,
Ups ... mój błąd! Proszę ignorować.
ujjwalesri