我正在使用开放层3, 我正在使用此代码显示地图:
wmsSource = new ol.source.TileWMS({
url: 'http://demo.boundlessgeo.com/geoserver/wms',
params: { 'LAYERS': 'ne:ne' },
serverType: 'geoserver',
crossOrigin: ''
});
var wmsLayer = new ol.layer.Tile({
source: wmsSource
});
我正在使用dragbox进行矩形选择,当我进行shift + drag时,我无法在地图中选择对象。有人可以帮我解决一下如何实现它吗? 这是我用于矩形选择的代码。
dragBox.on('boxend', function(e) {
// features that intersect the box are added to the collection of
// selected features, and their names are displayed in the "info"
// div
var info = [];
var extent = dragBox.getGeometry().getExtent();
wmsSource .forEachFeatureIntersectingExtent(extent, function(feature) {
selectedFeatures.push(feature);
info.push(feature.get('name'));
});
if (info.length > 0) {
infoBox.innerHTML = info.join(', ');
}
}); `
答案 0 :(得分:3)
您使用TileWMS源,它是在WMS服务器上呈现的图像(图块)的集合。 OpenLayers不了解用于渲染图像的功能。因此,forEachFeatureIntersectingExtent
仅适用于矢量来源。
您可以在boxend回调中创建WMS getFeatureInfo
- 请求,以从服务器加载功能信息。
或者,您可以创建一个包含所需功能的矢量源,并用于forEachFeatureIntersectingExtent
调用。