Google Maps API v3 infowindow закрытие события / обратного вызова? - PullRequest
68 голосов
/ 21 июля 2011

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

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

Ответы [ 3 ]

154 голосов
/ 21 июля 2011

есть событие для вызова 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
});
8 голосов
/ 20 ноября 2016

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

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

0 голосов
/ 17 марта 2017

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...