Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

есть событие для вызова 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
});

Ответ 2

Единственное согласованное решение, которое я нашел здесь, - это сохранить указатель на 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 прекрасен. Однако есть другие причины, по которым он может быть или был закрыт.

Ответ 3

Попробуйте следующее:

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

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