在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,其中也有一些元数据属性。
那么,如何获取所选功能?
感谢
又是一个"欢呼"时刻。该错误与selectClick
的语法以及我如何设置layers
变量有关。我将this.vectorlayer
设置为变量,但它应该在数组内,因此出现了与数组相关的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
}
);
感谢