我还在学习开放层,我遇到了一个问题。如果单击此点,我需要为我的脚本提供一个点的 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.WMSGetFeatureInfo
或 ol.format.GeoJSON
解析响应,对于解析的特征,您只需使用 ol.Feature#getId()
即可获取 id。