Was ist der richtige Weg, um alle Funktionen aus FeatureLayer zu löschen?


10

Ich habe eine featureLayerund ich möchte sie nicht töten und eine andere erschaffen. Ich möchte alle Features aus dem aktuellen FeatureLayer löschen. Ich habe festgestellt, dass ich die applyEditsMethode verwenden kann , aber um sie verwenden zu können, muss ich alle Funktionen haben, die ich löschen möchte. Ich möchte sie zwar nicht separat aufbewahren. Kennen Sie eine bessere Möglichkeit, meinen FeatureLayer zu leeren, wenn Sie die ArcGIS Javascript-API verwenden?

Antworten:


3

Verwenden Sie featureLayer.selectFeatures () mit einer where-Klausel, die alle Ihre Funktionen zurückgibt, wie Kirk vorgeschlagen hat. Wenn Sie alle Ihre Funktionen haben, übergeben Sie sie beim Löschen an applyEdits ().


Gibt dies dem Client nicht viele Funktionen zurück? Wenn dies ein großer Datensatz ist, kann er sehr langsam sein.
Kirk Kuykendall

2
Das einzige Problem ist, dass ich nicht die richtige where-Klausel angeben kann - ich habe "1 = 1", "OBJECTID> 0" usw. versucht. Aber jedes Mal, wenn ich den Fehler "FeatureLayer :: selectFeatures - habe, enthält die Abfrage einen oder mehrere nicht unterstützte Parameter ". Der Code var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (Abfrage, ...);
Kirill Lykov

Wenn featurelayer nicht mit einem Feature-Service verbunden ist, werden möglicherweise keine where-Klauseln unterstützt. Was denken Sie?
Kirill Lykov

"Wenn featurelayer nicht mit einem Feature-Service verbunden ist, werden where-Klauseln nicht unterstützt" - das ist richtig, aber wenn ja, wird die Bearbeitung auch nicht unterstützt. Aus der API-Referenz: "Wenn der zugrunde liegende Layer ... von einem Feature-Service stammt, können seine Features bearbeitet werden", was bedeutet, dass Ihr Feature-Layer mit einem Feature-Service verbunden ist
Stephen Lead

"Es würde auch keine Bearbeitung unterstützen" - Ich unterstütze die Bearbeitung, auch wenn sie nicht mit dem Dienst verbunden ist. Hovewer, ich musste einige Problemumgehungen vornehmen.
Kirill Lykov


1

Wenn Sie den Feature-Layer auf der Clientseite erstellt haben (keine serverseitige URL), können Sie keine Abfrage mit einer where-Klausel verwenden. Ich konnte dies umgehen, indem ich den Umfang der Karte durchsuchte und dann alle gefundenen Elemente löschte. Zum Beispiel:

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


-2

Verwenden Sie einen Aktualisierungscursor und wählen Sie alle Funktionen aus ("*").

Verwenden Sie IFeature.Delete () und speichern Sie es, wenn Sie fertig sind.


Bei dieser Frage wird nach einer JavaScript-Lösung gefragt, nicht nach ArcObjects.
Derek Swingley

Ups ... mein Fehler! Bitte ignorieren.
Ujjwalesri
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.