Повторяющиеся ярлыки отображаются в режиме редактирования многоугольника

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

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

который этого не достигнет, проблем нет.

Я называю эти две строки каждый раз, когда область полигона обновляется. Однако, если я отредактирую многоугольник с помощью элемента управления редактированием, обновленная область будет отображаться на всех узлах.

И если пользователь закончил редактирование и переключился на другие узлы, все стало нормальным. Я попытался установить ярлыки на пустые строки, когда пользователь нажимает на элемент управления редактирования, но только скрывает основную метку (ту, что находится в центре), но метки на узлах все еще существуют.

$('.olControlModifyFeatureItemInactive').click(function() {
 polygonLayer.styleMap.styles.default.defaultStyle.label = "";
 polygonLayer.redraw();
 });

Что там происходит и как я могу предотвратить отображение значений дублированных областей?

1 ответ

Взгляните на ЭТО

Вы должны уметь настраивать context на нашей карте стиля и только возвращать метку, если она НЕ в режиме редактирования:

var styleMap = new OpenLayers.StyleMap(new OpenLayers.Style({
 label: "${getLabel}"
 // your other symbolizer properties here
 }, {context: {
 getLabel: function(feature) {
 if(!mycontrolIsNotInEditMode) {
 return feature.attributes.label;
 }
 }
 }}
 ));

licensed under cc by-sa 3.0 with attribution.