Как я могу обновить метку полигонального вектора в OpenLayers после его отрисовки? - PullRequest
1 голос
/ 17 января 2012

Я новичок в OpenLayers. Прямо сейчас у меня есть полигональный вектор с некоторыми стилями и меткой.

var style = $.extend(true, {}, OpenLayers.Feature.Vector.style['default']);
style.pointRadius = 15;
style.label = "My Polygon";
style.fillColor = #f00;
style.strokeColor = #000;

var styleMap = new OpenLayers.StyleMap({"default" : style});

var polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer", {styleMap: styleMap});

В какой-то момент после некоторой обработки я хочу отобразить результат в виде метки. Как я могу обновить этикетку? Я полагаю, что это было бы что-то вроде этого, но это было не так.

polygonLayer.options.styleMap.styles.label = "Updated label";

Заранее спасибо.

1 Ответ

3 голосов
/ 18 января 2012

Вы на правильном пути.Вы можете установить новую метку для всех объектов слоя следующим образом:

polygonLayer.styleMap.styles.default.defaultStyle.label = "new label";
polygonLayer.redraw();

Как видите, важно вызывать метод redraw() после установки нового значения.

Вот как вы меняетеметка для всех объектов в слое.Довольно часто, хотя вам нужно будет установить новые метки для каждой функции.Чтобы достичь этого, вы должны сделать следующее при создании pollygonLayer:

var style = $.extend(true, {}, OpenLayers.Feature.Vector.style['default']);
style.label = "${feature_name}";

Каждая функция имеет набор атрибутов.В этом случае значение атрибута feature_name будет отображаться как метка.Чтобы изменить значение метки для объекта, просто измените значение атрибута для этого объекта, а затем, конечно, вызовите redraw() на слое.

...