当前位置: 首页 > 知识库问答 >
问题:

Openlayers:从GeoJson中以编程方式选择功能

夹谷烨赫
2023-03-14

我正在从事一个使用openlayers(version2.14)显示Bing层(GeoJSON格式)的项目,我在阅读GeoJSON和显示功能方面没有问题,但我想以编程方式选择一个功能,例如,有一个表显示所有功能属性(GeoJSON格式。示例:

{“类型”:“特征集合”,“特征”:[{“类型”:“特征”,“属性”:{},“几何”:{“类型”:“点”,“坐标”:[-7923751.42325225233536.7371399]},“crs”:{“类型”:“名称”,“属性”:{“名称”:“urn:ogc:def:crs:ogc:1.3:CRS84”}},}

),当我单击表中的一行时,我希望使用该行中的GEOJSON数据选择或突出显示地图上的特定要素。

我该怎么做?

谢啦

共有1个答案

宇文曦
2023-03-14

您可以使用方法“getFeaturesByAttribute”

或迭代所有功能:

 for(var i = 0; i < yourgeojsonlayer.features.length; i++) { 
    if(yourgeojsonlayer.features[i].attributes.searchedAttribute == 'searchedValue')
     { selectFeatureControl.select(yourgeojsonlayer.features[i]); break; } 
    }

Ps:首先需要创建一个select控件,并指定在for循环中使用的变量名(此处为selectFeatureControl)

请看我的例子:http://jsfiddle.net/expedio/sh9wv4m7/和http://jsfiddle.net/3p5q0ybh/

 类似资料:
  • 我正在使用OpenLayers并加载两个GEOJson文件,这些文件工作得非常好。现在,我希望能够选择GEOJson文件的各个组件。例如,如果在激活悬停选择时有多个特征(两个多边形),则不会发生任何情况。 我在这个示例中添加了悬停选择器http://openlayers.org/dev/examples/geojson.html 我实际上可以独立拖动元素,但我不能选择它们。我想是因为我使用的投影。

  • 我有一个,它由sqlite数据库中的城市填充,该数据库在项目单击时调用。最近我添加了一个使用gps检测我的位置的选项,所以问题是我可以检测城市(即贝鲁特)并设置的文本,但问题是下拉筛选器打开时显示贝鲁特(这是正确的),但我仍然需要单击列表项来调用监听器,如何以编程方式这样做 如何: 输入活动(DONE) 检测位置(DONE) 设置文本视图的文本(DONE) 显示textview下拉列表(已完成)

  • 问题内容: 启动应用程序时,未选择任何行。但我想表明第一行已被选中。 这该怎么做?我是否需要设置行的颜色? 更新:我尝试了table.setRowSelectionInterval(0,0)。我知道它应该可以工作,但是有一条错误消息: 问题答案: 您可以调用setRowSelectionInterval来做到这一点: 选择第一行。

  • 问题内容: 如何以编程方式选择UITextField中的所有文本? 问题答案: 原来,调用-selectAll:使用非零发送者显示菜单。用nil调用它会使它选择文本,但不显示菜单。 在我的bug报告从Apple回来后,我建议我通过nil而不是self来尝试。 无需考虑UIMenuController或其他选择API。

  • 我有一个。Geojson文件(称之为data.geojson),我用它来手动更新mapbox上的数据集。 假设我的data.geojson文件的结构如下: data.geojson存储在本地,每12小时使用另一个从web上抓取数据的python脚本更新每个功能的“待业”属性。 目前,为了在在线数据集中(存储在mapbox.com)更新这些属性,我正在手动导航到mapbox网站并重新加载data.g

  • 问题内容: 我有一个隐藏的文件输入元素。是否可以通过按钮的单击事件来触发其 选择文件 对话框? 问题答案: 如果您希望使用自己的按钮来上传文件而不是使用,则可以执行以下操作: 请注意,我使用而不是。您不能在未显示的文件输入上调用click事件。