首页 > 解决方案 > 在openlayers 5中获得点击功能时出现arr.indexOf错误

问题描述

在 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());  
});

我得到

错误类型错误:arr.indexOf 不是函数

在这两种情况下。

我究竟做错了什么?我的最终目标是做类似 的事情selectClick.getFeatures().feature.properties.id,因为我正在加载的 geoJSON 也有一些元数据属性。

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

谢谢

标签: vectoropenlayersopenlayers-5

解决方案


另一个“哎呀”的时刻。该错误与 var 的语法selectClick以及我设置layersvar 的方式有关。我将this.vectorlayerjust 设置为 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
  }             
);

谢谢


推荐阅读