openlayers получают слой из объекта - PullRequest
0 голосов
/ 26 января 2019

У меня есть взаимодействие выбора - для выбора объектов, связанных с векторным слоем. Моя цель - отредактировать атрибуты объекта и сохранить его обратно в базу данных.

  import Map from 'ol/Map'; 
  import View from 'ol/View';
  import Select from 'ol/interaction/Select.js';

  ...

  this.map = new Map({
    target: 'map',
    view: new View({
      center: this.$root.mapState.center,
      zoom: this.$root.mapState.zoom
    })
  });
  AddLayers(this.map, this.$root.map.layers, this.$root.register);
  this.select = new Select();
  this.map.addInteraction(this.select);
  this.select.on('select', function(e) {
    e.target.getFeatures().forEach(function(feature) {
      alert('Selected ' + feature.getId());
    });
  });

Как мне получить слой из объекта?

Ответ на этот вопрос 2015 года будет работать.

Мне действительно нужно пройти через все это? В OpenLayers 2 я бы сослался на feature.layer - эта функциональность, похоже, исчезла.

1 Ответ

0 голосов
/ 27 января 2019

Благодаря @Mike, я добавил me.select.getLayer(feature) в цикл над функциями.

Полное решение:

  import Map from 'ol/Map'; 
  import View from 'ol/View';
  import Select from 'ol/interaction/Select.js';

  ...

  this.map = new Map({
    target: 'map',
    view: new View({
      center: this.$root.mapState.center,
      zoom: this.$root.mapState.zoom
    })
  });
  AddLayers(this.map, this.$root.map.layers, this.$root.register);
  this.select = new Select();
  this.map.addInteraction(this.select);
  var me = this;
  this.select.on('select', function(e) {
    e.target.getFeatures().forEach(function(feature) {
      var layer = me.select.getLayer(feature);
      alert('Selected ' + feature.getId());
    });
  });
...