2013-03-25 10 views
23

Dla każdego, kto zna się na ulotce, czy znasz sposób na dynamiczną zmianę koloru wielokąta? Weźmy na przykład okrąg zdefiniowany następująco:Dynamicznie zmienić kolor wielokąta w ulotce?

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

Później, gdy użytkownik kliknie przycisk gdzieś na interfejsie (na przykład), chcę zmienić kolor okręgu takiego:

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

Kod zmienia wartość window.circle.options.fillColor, ale zmiana nie jest odzwierciedlona zmianą koloru wielokąta na mapie. Szukałem, ale niczego nie znalazłem. Jakieś pomysły?

Dzięki.

Odpowiedz

34

L.Circle rozciąga L.Path (http://leafletjs.com/reference.html#path), które mają metodę setStyle(<Path options> object), można zastosować nowy styl jako window.circle.setStyle({fillColor: '#dddddd'});

+0

Działa idealnie. Dzięki! – Owen

+4

To wydaje się dobrze działać, aby zmienić wygląd. Jednak, gdy próbuję tego, nie wydaje się, aby znalazło odzwierciedlenie w tej warstwie kodu, aby móc ją zapisać. Czy mam jakoś zaktualizować warstwę po ustawieniu stylu? – Josh

1

Jeśli szukasz czegoś takiego:

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

Te opcje są dostępne dla GeoJSON dane takie jak: L.geojson() .....: D

Tak, dla wielokąta. Wypróbuj,

circle.setStyle({ 
    color: 'red' 

});