在openlayers 5中获得单击功能时出现arr.indexOf错误

时间:2018-08-01 19:59:13

标签: vector openlayers 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)中也包含一些元数据属性。

那么,如何获得所选功能?

谢谢

1 个答案:

答案 0 :(得分:0)

另一个“扑朔迷离”的时刻。该错误与selectClick的语法以及如何设置layers var有关。我将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
  }             
);

谢谢