Страница 1 из 1

Openlayers - скрыть feature

Добавлено: 28 июн 2012, 13:53
bratok
Добрый день.
Задача такова: есть 2 слоя - A и B
- сначала грузиться A на него навешивается OpenLayers.Control.SelectFeature
- при клике на feature слоя A данная feature ставиться невидимой, создается слой B
- слой B отображается на карте затем к ней подключается тот же OpenLayers.Control.SelectFeature, и в этот момент
выбранная feature слоя A становится видимой. ВОПРОС: как оставить feature слоя A скрытой?
Установка feature.attributes['visibility'] = false; не дает результата.

Кто знает, подскажите, пожалуйста.

Re: Openlayers - скрыть feature

Добавлено: 28 июн 2012, 15:07
Denis Rykov
bratok писал(а):ставиться невидимой
Или становится? Каким образом вы скрываете фичу?

Re: Openlayers - скрыть feature

Добавлено: 28 июн 2012, 15:15
bratok
Спасибо разобрался уже, вся загвоздка в методе
OpenLayers.Control.SelectFeature.prototype.setLayer
там есть вызов такой команды this.unselectAll() которая и снимает все ранее сделанные выделения

добавил свою функцию addLayer на основе setLayer

Код: Выделить всё

OpenLayers.Control.SelectFeature.prototype.addLayer = function(layer) {
        var layers = this.layers; 
        var isActive = this.active;
        //this.unselectAll(); <- what you need
        this.deactivate();
        if(this.layers) {
            this.layer.destroy();
            this.layers = null;
        }
        this.initLayer(layers);
        this.handlers.feature.layer = this.layer;
        if (isActive) {
            this.activate();
        }
      }