Di più

Modificare l'attività di ricerca in ESRI-Leaflet?

Modificare l'attività di ricerca in ESRI-Leaflet?


Sto cercando di capire come modificare l'attività Trova nell'opuscolo ESRI in modo che quando l'utente digita un nuovo testo per la ricerca, la vecchia selezione venga cancellata.

Attualmente, quando "trovi" una funzionalità (ad esempio, cerca qualsiasi nome di stato qui: http://esri.github.io/esri-leaflet/examples/finding-features.html), l'unico modo per cancellare l'evidenziazione è ricaricare l'intera pagina. Se si esegue un'altra ricerca, la seconda selezione viene aggiunta alla prima, invece di sostituire la prima.

Ho esaminato la documentazione qui: http://esri.github.io/esri-leaflet/api-reference/tasks/find.html, ma non riesco a trovare alcuna indicazione su come cancellare l'evidenziazione. Sono anche abbastanza nuovo per Javascript e Leaflet e mi chiedo se ci siano alcuni metodi Leaflet che dovrei incorporare qui.


L'attività di ricerca consiste nell'aggiungere un livello geojson della posizione trovata alla mappa del volantino proprio qui:

L.geoJson(featureCollection, { style: { color: 'red' }, onEachFeature: function (feature, layer) { layer.bindPopup(feature.properties.GNIS_NAME); } }).addTo(map);

Se rendi quel livello una variabile:

var geoJsonLayer = L.geoJson…

Potrai chiamare:map.removeLayer(geonJsonLayer);

Quindi quello che vorrai fare, nel callback dell'attività di ricerca, è controllare se il geoJsonLayer è stato aggiunto alla mappa, in tal caso rimuoverlo prima di aggiungerne uno nuovo.

Ecco il link ai documenti del volantino sulla modifica della mappa:

Spero che sia d'aiuto!

Aggiornamento: ecco un jsFiddle che mostra come utilizzare un'istruzione if per verificare se il livello esiste e, in tal caso, rimuoverlo prima di aggiungerne uno nuovo.


Guarda il video: The Leaflet #Marker Object. #Vector layers in Leaflet. GIS Data on Web with #Leaflet JS #API. #11