Ошибка arr.indexOf при получении функции щелчка в openlayers 5

В openlayers 5 у меня есть векторный слой, и я пытаюсь создать код, чтобы получить свойства объекта после его нажатия.

Это мой код до сих пор

var selectClick = new Select({
  condition: click,
  layers:this.vectorlayer
});

this.olmap.addInteraction(selectClick);    

var selectedFeatures = selectClick.getFeatures();

а потом я попробовал

selectClick.on('select', ()=>{console.log(selectedFeatures);});

а также

selectedFeatures.on('add', function(event) {
  console.log( selectClick.getFeatures());  
});

и я получаю

ОШИБКА TypeError: arr.indexOf не является функцией

в обоих случаях.

Что я делаю неправильно? Моя конечная цель — сделать что-то вроде selectClick.getFeatures().feature.properties.id, поскольку загружаемый мной geoJSON также имеет некоторые свойства метаданных.

Итак, как я могу получить выбранную функцию?

Спасибо


person codebot    schedule 01.08.2018    source источник
comment
возможный дубликат интерактивных функций в векторных слоях в openlayers 5   -  person geocodezip    schedule 02.08.2018


Ответы (1)


Еще один "упс" момент. Ошибка была связана с синтаксисом selectClick и тем, как я установил переменную layers. Я установил this.vectorlayer просто как var, но он должен быть внутри массива, отсюда и связанная с массивом ошибка indexOf.

Код в ol5+angular6 теперь

this.vectorsource = new VectorSource({});

this.vectorlayer = new VectorLayer({
  source: this.vectorsource
});

this.view = new OlView({
  center: OlProj.fromLonLat([6.661594, 50.433237]),
  zoom: 2,
});

this.olmap = new OlMap({
  target: 'map',
  layers: [this.tilelayer,this.vectorlayer],
  view: this.view,
  projection: 'EPSG:3857'
});

var selectClick = new Select({
  condition: click,
  layers:[this.vectorlayer]//this should be in an array, you silly codebot
});

this.olmap.addInteraction(selectClick);        

selectClick.on(
  'select', function(){     
    console.log(selectClick.getFeatures().item(0).values_);//   contains metadata properties of geoJSON
  }             
);

Спасибо

person codebot    schedule 02.08.2018