OpenLayer 3.5 从点获取特征 ID

openlayer 3.5 get feature id from point

本文关键字:获取 特征 ID OpenLayer      更新时间:2023-09-26

我还在学习开放层,我遇到了一个问题。如果单击此点,我需要为我的脚本提供一个点的 id。有了这个id(该函数作为变量),我想做一些编码。

在一些例子的帮助下,我设法在我的网站上得到了一张桌子。我使用以下代码(javascript)执行此操作:

map.on('singleclick', function(evt) {
    document.getElementById('nodelist').innerHTML = "Loading... please wait...";
    var view = map.getView();
    var viewResolution = view.getResolution();
    var source = untiled.get('visible') ? untiled.getSource() : tiled.getSource();
    var url = source.getGetFeatureInfoUrl(
      evt.coordinate, viewResolution, view.getProjection(),
      {'INFO_FORMAT': 'text/html', 'FEATURE_COUNT': 50});
    if (url) {
      document.getElementById('nodelist').innerHTML = '<iframe seamless src="' + url + '"></iframe>';
    }
  });

但我想要的不是显示表并从表中获取点的 id。

有人可以给我一些提示吗?

如果要访问功能 ID,则不能在 GetFeatureInfo 请求中使用"text/html"格式。相反,您必须使用"application/vnd.ogc.gml"或"application/json"格式。仅当服务器允许 CORS 请求,或者服务器与应用程序位于同一源时,此操作才有效。然后,您必须在 AJAX 请求中使用它,而不是在 IFRAME 中使用 source.getGetFeatureInfoUrl() 中的 url。使用 ol.format.WMSGetFeatureInfool.format.GeoJSON 解析响应,对于解析的特征,您只需使用 ol.Feature#getId() 即可获取 id。