Здраствуйте такой вопрос , через popup я получаю информацию об объекте при клике на него ,но никак не могу найти функцию,чтобы первый popup автоматически закрывался при клике по карте ,а то получается этих окошков сотни ,подскажите пожалуйста ,код
var popup = null;
info = new OpenLayers.Control.WMSGetFeatureInfo({
url: "http://localhost:8080/geoserver/wms",
title: 'Information',
queryVisible: true,
eventListeners: {
getfeatureinfo: function(event) {
if (!event.text.match(/<body>\s*<\/body>/)) //проверка: ответил ли сервер на запрос
{
if (popup) //проверка: существуют ли popup'ы на карте, если да, то закрываем
{
popup.destroy();
popup = null;
}
popup = new OpenLayers.Popup.FramedCloud(
"chicken",
map.getLonLatFromPixel(event.xy),
null,
event.text,
null,
true
);
map.addPopup(popup);
}
}
}
});
map.addControl(info);
info.activate();
Всё намного проще.У функции addPopup есть второй параметр: addPopup: function(popup,exclusive), отвечающий за эксклюзивность нового окошка на экране. Если этот флажок задать в true, то все прошлые поп-апы автоматически закроются.
Замените
Кстати, да. Вот, что значить "вариться" в своей задаче - у меня надо держать старый попап на карте до получения детальной информации для нового (пока инфы нет, в нём "бежит" полоска ожидания).