在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)中也包含一些元数据属性。
那么,如何获得所选功能?
谢谢
答案 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
}
);
谢谢