GetFeatureInfo查询仅适用于OpenLayers 6中的可见层



我是JS和OL的新手,我有一个Openlayers 6地图,其中不同的WMS层分组为几个ol.layer.Group。我想通过getGetFeatureInfoUrl&quot请求功能信息。图层的可见性可以在图层树中打开/关闭。我想,点击地图上的某个地方:

  • 仅获取当前可见层的特征信息
  • 和,如果有多个层在选定的位置,获得所有的特征信息

这段代码只适用于一个层(在本例中为wmsLayer5)

map.on('singleclick', function (evt) {
if (!wmsLayer5.getVisible()) return;
document.getElementById('info').innerHTML = '';
const viewResolution = /** @type {number} */ (vista.getResolution());
const url = wmsLayer5.getSource().getFeatureInfoUrl(
evt.coordinate,
viewResolution,
'EPSG:25830',
{'INFO_FORMAT': 'text/html'}
);
if (url) {
fetch(url)
.then((response) => response.text())
.then((html) => {
document.getElementById('info').innerHTML = html;
});
}
});

但是我需要一个代码来迭代所有的层,只有调用getFeatureInfo,如果他们是可见的。我试过这个,但不工作,不返回任何消息在控制台

map.on('singleclick', function (evt1) {
document.getElementById('info').innerHTML = '';
var viewResolution = /** @type {number} */
(vista.getResolution());
var url = '';
document.getElementById('info').innerHTML ='';
layers.forEach(function (layer, i, layers) {
if (layer.getVisible() ) {
url = layer.getSource().getGetFeatureInfoUrl(
evt1.coordinate, 
viewResolution, 
'EPSG:25830', {
'INFO_FORMAT': 'text/html',
'FEATURE_COUNT': '300'
});
if (url) {
fetch(url)
.then((response) => response.text())
.then((html) => {
document.getElementById('info').innerHTML += html;
});
}
}
});

});

有什么建议吗?

此方法自版本6.13(4个月前)以来已弃用,在下一个主要版本之前不会更改。我没有使用建议的替代layer.getData()。下面的代码遍历所有层,只查询可见的和Image类型的层。


map.on("click", onMouseClick);
function onMouseClick(browserEvent) {
let coordinate = browserEvent.coordinate;
let pixel = map.getPixelFromCoordinate(coordinate);
map.forEachLayerAtPixel(pixel, function (layer) {
if (layer instanceof ol.layer.Image) {
if (layer.get("visible")) {
let url = layer.getSource().getFeatureInfoUrl(coordinate, map.getView().getResolution(), "EPSG:3857", {
INFO_FORMAT: "application/json",
});
if (url) {
fetch(url)
.then(function (response) {
return response.text();
})
.then(function (json) {
let data = JSON.parse(json);
if (data.features.length >0) {
//Do something with data.features
}
});
}
}
}
});
}

相关内容

  • 没有找到相关文章

最新更新