qual è il modo giusto per eliminare tutte le funzionalità da featureLayer


10

Ho un featureLayere non voglio ucciderlo e crearne un altro. Voglio eliminare tutte le funzionalità dall'attuale featureLayer. Ho scoperto che posso usare il applyEditsmetodo, ma per usarlo devo avere tutte le funzionalità che voglio eliminare. Non voglio conservarli separatamente. Conosci un modo migliore per svuotare il mio featureLayer quando usi l'API Javascript ArcGIS?

Risposte:


3

Usa featureLayer.selectFeatures () con, come suggerito Kirk, una clausola where che restituirà tutte le tue funzionalità. Una volta che hai tutte le funzionalità, passale per applicareEdits () come le eliminazioni.


Questo non restituirà molte funzionalità al client? Se si tratta di un set di dati di grandi dimensioni, potrebbe essere molto lento.
Kirk Kuykendall,

2
L'unico problema è che non riesco a specificare la clausola where corretta - Ho provato "1 = 1", "OBJECTID> 0", ecc. Ma ogni volta che ho un errore "FeatureLayer :: selectFeatures - la query contiene uno o più parametri non supportati ". Il codice var query = new esri.tasks.Query (); query.where = "1 = 1"; featureLayer.selectFeatures (query, ...);
Kirill Lykov,

Forse, se featurelayer non è collegato a nessun servizio di funzionalità, non supporta dove clausole. Cosa ne pensi?
Kirill Lykov,

"se featurelayer non è collegato a nessun servizio di funzionalità, non supporta le clausole", è corretto, ma in tal caso non supporta la modifica. Dal riferimento API: "Se il livello sottostante ... proviene da un servizio di funzionalità, le sue funzionalità possono essere modificate", il che implica che il tuo layer di funzionalità È collegato a un servizio di funzionalità
Stephen Lead,

"inoltre non supporterebbe il montaggio" - Io sostengo il montaggio anche se non è collegato al servizio. Hovewer, ho dovuto fare alcune soluzioni alternative.
Kirill Lykov,


1

Se è stato creato il feature layer sul lato client (nessun URL lato server), non è possibile utilizzare una query con una clausola where. Sono stato in grado di aggirare questo problema cercando l'estensione della mappa e quindi eliminando tutti gli elementi che ho trovato. Per esempio:

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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.