Google Maps API v3 infowindow закрыть событие / обратный вызов?



Мне нравится отслеживать любые и все информационные окна, которые открыты в моем интерфейсе Google Maps (я храню их имена в массиве), но я не могу понять, как удалить их из моего массива, когда они закрыты через "x" в верхнем правом углу каждого из них.

есть ли какой-то обратный вызов, который я могу слушать? Или, может быть, я могу сделать что-то вроде addListener("close", infowindow1, etc ?

185   3  

3 ответов:

есть событие для вызова infowindows closeclick что может помочь вам

var currentMark;
var infoWindow = new google.maps.InfoWindow({
            content: 'im an info windows'
        });
google.maps.event.addListener(marker, 'click', function () {
          infoWindow.open(map, this);
          currentMark = this;

});
google.maps.event.addListener(infoWindow,'closeclick',function(){
   currentMark.setMap(null); //removes the marker
   // then, remove the infowindows name from the array
});

единственное последовательное решение, которое я нашел здесь, - это сохранить указатель на infoWindow и проверить его .getMap() метод всякий раз, когда вам нужно проверить, был ли он закрыт.

причина этого заключается в том, что щелчок другого элемента может привести к тому, что infoWindow будет отклонен по другим причинам... без closeclick событий.

var infoWindow = new google.maps.InfoWindow({ content: 'Something to put here.' });
infoWindow.open(map, infoWindow);

setInterval(function ()
{
    console.log("infoWindow is bound to map: "+(infoWindow.getMap() ? true : false));

}, 1000);

... Если вы буквально только заботитесь, если infoWindow был закрыт с помощью кнопки "X", а затем мониторинг closeclick - это хорошо. Однако, есть и другие причины, по которым он может быть или был закрыт.

попробуйте это:

var closeBtn = $('.gm-style-iw').next();
closeBtn.click(function(){
    //other things you want to do when close btn is click
    that.infowindow.close();
});

Я перезаписываю эту функцию щелчка, потому что кнопка щелчка не будет работать в safari после изменения ее css/позиции.

    Ничего не найдено.

Добавить ответ:
Отменить.