Повторяющиеся надписи отображаются в режиме редактирования полигона - PullRequest
0 голосов
/ 02 февраля 2012

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

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

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

enter image description here

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

enter image description here

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

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

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

1 Ответ

1 голос
/ 02 февраля 2012

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

Вы сможете настроить 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;
                }
            }
        }}
    ));
...