MapBox: изменение цвета существующего полигона

Я пытаюсь использовать следующий код, чтобы изменить цвет многоугольника на моей карте MapBox после того, как он уже добавлен на карту.

parishPolygon990 = L.polygon([ vertices ], { color: "#0000FF" }).addTo(map);

console.log(parishPolygon990); // returns #0000FF
console.log(parishPolygon990.options['color']); // returns #0000FF
parishPolygon990.options.color = '#d31603';
console.log(parishPolygon990); // returns #d31603
console.log(parishPolygon990.options['color']); // returns #d31603

Вы можете видеть, что значение цвета полигона обновляется, но полигон на карте не меняет цвет.

Как программно изменить цвет полигона на карте после его добавления?

Спасибо!


person Mark J. Reeves    schedule 19.03.2015    source источник


Ответы (1)


Используйте метод setStyle из L.Path, из которого L.Polygon расширен:

var polygon = L.polygon([[45,45],[-45,45],[-45,-45],[45,-45]]).addTo(map);

polygon.setStyle({'color': 'yellow'});

Рабочий пример на Plunker: http://plnkr.co/edit/vL0rAoKQGhV8zri8mDz7?p=preview

Ссылка: http://leafletjs.com/reference.html#path-setstyle

Если вы действительно хотите сделать это, изменив объект параметров, вам нужно будет впоследствии вызвать метод _updateStyle для L.Path:

polygon.options.color = 'yellow';
polygon._updateStyle();

Но, как предполагает _, это внутренний метод L.Path и не является частью API, поэтому вам следует избегать его использования, поскольку он может измениться в будущих версиях Leaflet. Просто подумал, что я должен упомянуть об этом.

person iH8    schedule 19.03.2015
comment
Нет, спасибо, всегда пожалуйста, я добавил внутренний метод, который вызывается при настройке стиля, тоже работает, но его не следует использовать - person iH8; 19.03.2015