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?

Kirill Lykov
quelle

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 ().

Derek Swingley
quelle
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
4

Versuchen Sie, einen Aufruf von REST-Löschfunktionen mit einer where-Klausel "1 = 1" oder ähnlichem durchzuführen.

Kirk Kuykendall
quelle
1
Hallo, gibt es eine Syntax für den Aufruf der REST-Löschfunktionen?
Könnten
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]);
            }
        });
    });
}
Chris
quelle
0

Schauen Sie sich die clear () -Methode an:

Löscht alle Grafiken.

featureLayer.clear();
Leniel Maccaferri
quelle
-2

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

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

ujjwalesri
quelle
Bei dieser Frage wird nach einer JavaScript-Lösung gefragt, nicht nach ArcObjects.
Derek Swingley
Ups ... mein Fehler! Bitte ignorieren.
Ujjwalesri