gpt4 book ai didi

javascript - 在开放层 3 中使用 ol.source.TileWMS 选择 map 对象

转载 作者:行者123 更新时间:2023-11-30 12:15:08 27 4
gpt4 key购买 nike

我正在使用开放层 3,我正在使用此代码来显示 map :

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 + 拖动操作时,我无法选择 map 中的对象。有人可以帮我实现它吗?这是我用于矩形选择的代码。

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(', ');
}
}); `

最佳答案

您使用 TileWMS 源,它是在 WMS 服务器上呈现的图像(图 block )的集合。 OpenLayers 不知道用于渲染图像的功能。因此,forEachFeatureIntersectingExtent 仅适用于矢量源。

您可以在 boxend 回调中创建一个 WMS getFeatureInfo 请求,以从服务器加载要素信息。

或者,您可以创建一个矢量源,其中包含您想要的特征并用于 forEachFeatureIntersectingExtent 调用。

关于javascript - 在开放层 3 中使用 ol.source.TileWMS 选择 map 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32608892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com