openlayer4: как удалить объект в слое и обновить карту - PullRequest
0 голосов
/ 15 мая 2018

Я хочу добавить событие двойного щелчка, чтобы удалить функцию. Хотя этот код работает хорошо, есть проблема: карта не может обновиться, объект все еще находится на карте, пока я дважды не нажму на кнопку «Далее». Как мне быть?

_createDoubleSelectControl: function() {
    var selectedStyle = [
        new OpenLayers.style.Style({
            stroke: new OpenLayers.style.Stroke({
                color: '#3399CC',
                width: 1.25
            })
        })
    ];
    this.doubleClickSelector = new OpenLayers.interaction.Select({
        condition: OpenLayers.events.condition.doubleClick,
        style: selectedStyle,
        multi: true,
        layers: [this.layers.cellLayer],
        filter: function(feature, layer) {
            return layer === this.layers.cellLayer;
        }.bind(this)
    });

    this.map.addInteraction(this.doubleClickSelector);
    this.doubleClickSelector.on('select', function(event) {
        let features = event.target.getFeatures();
        features.forEach(function(feature) {
            this._cellLayer.getSource().removeFeature(feature);
            //this._cellLayer.refresh();
            this._cellLayer.refresh({
                force: true,
                active: true
            });
            this.map.removeLayer(this._cellLayer);
            this.map.addLayer(this._cellLayer);
        }.bind(this));
    }.bind(this));
},

1 Ответ

0 голосов
/ 15 мая 2018

Вы должны удалить функцию из выбора при выборе:

this.doubleClickSelector.on('select',function(event){
  let features =event.target.getFeatures();
  // Clear selection
  this.doubleClickSelector.getFeatures().clear();
  // Remove from layer
  features.forEach(function(feature){
     this._cellLayer.getSource().removeFeature(feature);
  }.bind(this));
}.bind(this));

В противном случае функция все еще выбрана и видна ...

...