2013-03-25 20 views
23

Wenn Sie mit Leaflet vertraut sind, wissen Sie, wie Sie die Farbe eines Polygons dynamisch ändern können? Nehmen wir zum Beispiel einen Kreis wie folgt definiert:Ändern Sie die Farbe eines Polygons dynamisch in der Broschüre?

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

Dann später, nachdem ein Benutzer auf eine Schaltfläche irgendwo auf einer Schnittstelle klickt (zum Beispiel), ich möchte, wie dies die Farbe des Kreises ändern:

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

Der Code ändert den Wert für window.circle.options.fillColor, aber die Änderung spiegelt sich nicht in einer Änderung der Farbe des Polygons auf der Karte wider. Ich habe gesucht, aber nichts gefunden. Irgendwelche Ideen?

Danke.

Antwort

34

L.Circle erweitert L.Path (http://leafletjs.com/reference.html#path), das Verfahren hat setStyle(<Path options> object), und Sie können neuen Stil als window.circle.setStyle({fillColor: '#dddddd'});

+0

Funktioniert perfekt. Vielen Dank! – Owen

+4

Dies scheint gut zu funktionieren, um das Aussehen zu ändern. Wenn ich dies jedoch versuche, scheint es nicht in dieser Ebene im Code wiedergegeben zu werden, damit ich speichern kann. Soll ich die Ebene irgendwie aktualisieren, nachdem ich den Stil festgelegt habe? – Josh

1

anwenden Wenn Sie so etwas wie dies suchen:

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

Diese Optionen sind für GeoJSON Daten zB: L.geojson() .....: D

Also, für Polygon. Versuchen,

circle.setStyle({ 
    color: 'red' 

});

Verwandte Themen