J'aime garder une trace de toutes les infowindows ouvertes sur mon interface Google Maps (je stocke leurs noms dans un tableau), mais je ne vois pas comment les supprimer de mon tableau lorsqu'elles sont fermées via le "x "dans le coin supérieur droit de chacun.
Y a-t-il une sorte de rappel que je peux écouter? Ou peut-être que je peux faire quelque chose comme addListener("close", infowindow1, etc
?
il existe un événement pour l'appel d'Infowindows closeclick
qui peut vous aider
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
});
La seule solution cohérente que j'ai trouvée ici consiste à conserver un pointeur sur infoWindow
et à vérifier sa méthode .getMap()
chaque fois que vous devez valider si elle a été fermée.
La raison en est que cliquer sur un autre élément peut entraîner la fermeture de la fenêtre d’information pour d’autres raisons ... sans le déclenchement de l’événement 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);
... Si vous ne vous souciez littéralement que si la infoWindow
a été fermée en utilisant le bouton "X", alors la surveillance de closeclick
convient. Cependant, il y a d'autres raisons pour lesquelles il peut être ou ont été fermés.
Essaye ça:
var closeBtn = $('.gm-style-iw').next();
closeBtn.click(function(){
//other things you want to do when close btn is click
that.infowindow.close();
});
J'écrase cette fonction de clic car le bouton de clic ne fonctionnera pas dans un safari après en avoir changé la position css.