vector - 在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 也有一些元数据属性。
那么,如何获得所选功能?
谢谢
解决方案
另一个“哎呀”的时刻。该错误与 var 的语法selectClick
以及我设置layers
var 的方式有关。我将this.vectorlayer
just 设置为 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
}
);
谢谢
推荐阅读
- aem - AEM HTL/Sightly 在 URL 中连接字符串以在灯箱中播放视频或在新窗口中播放 PDF
- vba - 如何使用VBA删除跟随某个字符串到行尾的所有单词?
- java - Hibernate 两次保存相同的实体
- c# - 正则表达式在 C# 中拆分字符串
- kubernetes - Kubernetes Secrets 卷与环境变量
- java - 片段不会隐藏
- rest - 如何将表单中的详细信息发送到 ember.js 中的 rest API?
- c++ - 使用 unique_ptr 的常量字符指针
- javascript - 将更改监听器添加到引导程序 4 按钮组?
- rest - S3 存储桶对象可以用作 HTTP API 端点吗?