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?

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.


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


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]);
            }
        });
    });
}


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.