API Google Maps v3 закрывает событие/обратный вызов?
Мне нравится отслеживать любые и все инфо-окна, открытые в моем интерфейсе Google Maps (я храню их имена в массиве), но я не могу понять, как их удалить из моего массива, когда они закрыты через "x" в верхнем правом углу каждого из них.
Есть ли какой-то обратный вызов, который я могу слушать? Или, может быть, я могу сделать что-то вроде
addListener("close", infowindow1, etc
?
Ответы
Ответ 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/его положение.