gpt4 book ai didi

javascript - 对当前不可见的图层禁用 WMSGetFeatureInfo

转载 作者:行者123 更新时间:2023-11-28 14:01:34 25 4
gpt4 key购买 nike

我有一个 OpenLayers/GeoExtJS map ,每次用户单击 map 上的某个点时,都会弹出一个 WMSGetFeatureInfo 弹出窗口。但是,即使对于在用户单击时设置的分辨率下不可见的图层,弹出窗口也会显示结果。 OpenLayers layer.calculateInRange() 很好地告诉我哪些层当前在范围内或不在范围内,但我不知道如何从 getfeatureinfo 请求中消除它们...

即使在 getfeatureinfo 之前尝试事件监听器也不起作用...

任何想法都会很棒:)

var layersToBeQueried = [layerA, layerB, layerC, layerD, layerE];

function removeLayersOutOfRange(layerArray) {
for (var i = 0; i < layerArray.length; i++) {
alert(layerArray[i].name);
if (layerArray[i].calculateInRange() == false) {
layerArray.splice(i, 1);
}
}
return layerArray;
}
var info = new OpenLayers.Control.WMSGetFeatureInfo({
url: layerURL,
layerUrls: [layerURL],
title: 'Identify features by clicking',
queryVisible: true,
eventListeners: {
beforegetfeatureinfo: function (event) {
this.layers = removeLayersOutOfRange(layersToBeQueried);
},
getfeatureinfo: function (event) {

if (event.text.length <= 687) { } else {

popup = new GeoExt.Popup({
title: "Popup",
location: event.xy,
autoScroll: true,
height: $('#myViewPort').height() - 250,
maximizable: true,
collapsible: true,
map: mapPanel.map,
anchored: true,
html: '<div id="popupWrap"></div>',
listeners: {
close: function () {
// closing a popup destroys it, but our reference is truthy
popup = null;
}
}
});

popup.show();

}//end if
}//end getfeatureinfo
}//end eventListeners
});//end OpenLayers.Control.WMSGetFeatureInfo

mapPanel.map.addControl(info);
info.activate();

谢谢

艾尔莎

最佳答案

不是您原来问题的解决方案,但我认为您应该重新考虑removeLayersOutOfRange函数。在数组上使用 splice 会在循环中更改它,从而也会更改索引。这意味着您将无法正确循环所有层。

我建议您创建一个新数组,并将范围内的图层插入该数组,传递该数组,而不是编辑输入数组。

类似这样的东西(未经测试):

function removeLayersOutOfRange(layerArray){
var retArray = new Array();
for(var i = 0; i < layerArray.length; i++) {
//alert(layerArray[i].name);
if(layerArray[i].calculateInRange() == false){
retArray.push(layerArray[i]);
}
}
return retArray;
}

现在看看你原来的问题。也许层逻辑可以在搜索完成后执行?在 getFeatureInfo 方法中,询问图层逻辑哪些图层可见,然后仅使用这些图层中的信息编译消息?弄乱查询层可能是罪魁祸首。没有这方面的经验,只是猜测......

关于javascript - 对当前不可见的图层禁用 WMSGetFeatureInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822466/

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