OpenLayers 3 - 多个 WMS 层,如何仅从可见层获取特征信息?
OpenLayers 3 - Several WMS layers, how to get Feature Info only from visible ones?
我有一个包含多个 WMS 图层的 Openlayers 地图,我想通过 "getGetFeatureInfoUrl" 从中请求要素信息。层的可见性可以在层树中变为 on/off。我想点击地图上的某处:
- 仅为当前可见的图层获取特征信息
- 并且,如果所选位置有多个层,则获取所有层的特征信息。
我使用了 OpenLayers 网站上的示例代码。我尝试了这个代码位的变体
var url = layers[2].getSource().getGetFeatureInfoUrl(
evt1.coordinate, viewResolution, 'EPSG:3857', {
'INFO_FORMAT': 'text/html',
'FEATURE_COUNT': '300'
});
喜欢
var url = layers[].getSource().getGetFeatureInfoUrl(
或
var url = layers[1,2].getSource().getGetFeatureInfoUrl(
,但要么没有传递特征信息,要么只传递最后一层 - 不管它是否可见。
我在这里创建了一个带有两个示例层的 JSFiddle:http://jsfiddle.net/kidalex/j34xzaa3/5/
之前也有人问过类似的问题,比如这里:https://gis.stackexchange.com/questions/114297/querying-multiple-wms-layers-in-ol3-and-adding-to-a-single-popup-window;但我无法理解如何应用这些解决方案(JS/OL 这里是新手)。
你应该遍历你的层,并且只在它们可见而不是基础层时才调用 getFeatureInfo,尝试类似的方法:
map.on('singleclick', function (evt1) {
document.getElementById('info').innerHTML = '';
var viewResolution = /** @type {number} */
(view.getResolution());
var url = '';
document.getElementById('info').innerHTML ='';
layers.forEach(function (layer, i, layers) {
if (layer.getVisible() && layer.get('name')!='Basemap') {
url = layer.getSource().getGetFeatureInfoUrl(evt1.coordinate, viewResolution, 'EPSG:3857', {
'INFO_FORMAT': 'text/html',
'FEATURE_COUNT': '300'
});
if (url) {
document.getElementById('info').innerHTML +=
'<iframe seamless src="' + url + '"></iframe>';
}
}
});
});
编辑:语法
我有一个包含多个 WMS 图层的 Openlayers 地图,我想通过 "getGetFeatureInfoUrl" 从中请求要素信息。层的可见性可以在层树中变为 on/off。我想点击地图上的某处:
- 仅为当前可见的图层获取特征信息
- 并且,如果所选位置有多个层,则获取所有层的特征信息。
我使用了 OpenLayers 网站上的示例代码。我尝试了这个代码位的变体
var url = layers[2].getSource().getGetFeatureInfoUrl(
evt1.coordinate, viewResolution, 'EPSG:3857', {
'INFO_FORMAT': 'text/html',
'FEATURE_COUNT': '300'
});
喜欢
var url = layers[].getSource().getGetFeatureInfoUrl(
或
var url = layers[1,2].getSource().getGetFeatureInfoUrl(
,但要么没有传递特征信息,要么只传递最后一层 - 不管它是否可见。
我在这里创建了一个带有两个示例层的 JSFiddle:http://jsfiddle.net/kidalex/j34xzaa3/5/
之前也有人问过类似的问题,比如这里:https://gis.stackexchange.com/questions/114297/querying-multiple-wms-layers-in-ol3-and-adding-to-a-single-popup-window;但我无法理解如何应用这些解决方案(JS/OL 这里是新手)。
你应该遍历你的层,并且只在它们可见而不是基础层时才调用 getFeatureInfo,尝试类似的方法:
map.on('singleclick', function (evt1) {
document.getElementById('info').innerHTML = '';
var viewResolution = /** @type {number} */
(view.getResolution());
var url = '';
document.getElementById('info').innerHTML ='';
layers.forEach(function (layer, i, layers) {
if (layer.getVisible() && layer.get('name')!='Basemap') {
url = layer.getSource().getGetFeatureInfoUrl(evt1.coordinate, viewResolution, 'EPSG:3857', {
'INFO_FORMAT': 'text/html',
'FEATURE_COUNT': '300'
});
if (url) {
document.getElementById('info').innerHTML +=
'<iframe seamless src="' + url + '"></iframe>';
}
}
});
});
编辑:语法