У меня есть карта OpenLayers / GeoExtJS, и у меня появляется всплывающее окно WMSGetFeatureInfo каждый раз, когда пользователь нажимает на точку на карте.Тем не менее, всплывающее окно отображает результаты даже для слоев, которые не видны в разрешении, которое установлено во время щелчка пользователя.Слой OpenLayers layer.calculateInRange () довольно хорошо сообщает мне, какие слои в данный момент находятся в диапазоне или нет, но я не знаю, как исключить их из запроса getfeatureinfo ...
Даже попытка использования EventListener перед 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();
Спасибо,
elshae