2013-03-25 12 views
23

Per chi ha familiarità con Leaflet, conosci un modo per cambiare dinamicamente il colore di un poligono? Ad esempio, prendere un cerchio definito in questo modo:Cambia dinamicamente il colore di un poligono nell'opuscolo?

window.circle = L.circle([51.508, -0.11], 500, { 
color: 'red', 
fillColor: '#ffffff', 
    fillOpacity: 0.5 
}).addTo(map); 

Poi più tardi, dopo che un utente fa clic su un pulsante da qualche parte su un'interfaccia (ad esempio), voglio cambiare il colore del cerchio come questo:

window.circle.options.fillColor = "#dddddd"; 

Il codice modifica il valore per window.circle.options.fillColor, ma la modifica non viene riflessa da una modifica al colore del poligono sulla mappa. Ho cercato in giro ma non ho trovato nulla. Qualche idea?

Grazie.

risposta

34

L.Circle estende L.Path (http://leafletjs.com/reference.html#path), che hanno il metodo setStyle(<Path options> object), ed è possibile applicare il nuovo stile come window.circle.setStyle({fillColor: '#dddddd'});

+0

Funziona perfettamente. Grazie! – Owen

+4

Questo sembra funzionare bene per cambiare l'aspetto. Tuttavia, quando provo questo non sembra che si rifletta in quel livello nel codice per poter salvare. Dovrei in qualche modo aggiornare il livello dopo aver impostato lo stile? – Josh

1

Se siete alla ricerca di qualcosa di simile:

const circle = L.circle([lat, lng], { 
    style: style, 
    onEachFeature: onEachFeature, 
}); 

Queste opzioni sono disponibili per GeoJSON dati cioè: L.geojson() .....: D

Quindi, per poligono. Prova,

circle.setStyle({ 
    color: 'red' 

});

Problemi correlati