Ich behalte gerne alle Informationen, die in meiner Google Maps-Benutzeroberfläche geöffnet sind (ich speichere ihre Namen in einem Array), kann jedoch nicht herausfinden, wie ich sie aus meinem Array entfernen kann, wenn sie über das "x" geschlossen werden "in der oberen rechten Ecke eines jeden.
Gibt es eine Art Rückruf, auf den ich hören kann? Oder vielleicht kann ich so etwas wie addListener("close", infowindow1, etc
machen?
es gibt ein Ereignis für den Aufruf von Infowindows closeclick
, das Ihnen helfen kann
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
});
Die einzige konsistente Lösung, die ich hier gefunden habe, ist, einen Zeiger auf die Variable infoWindow
zu behalten und die Methode .getMap()
zu überprüfen, wenn Sie überprüfen müssen, ob sie geschlossen wurde.
Der Grund dafür ist, dass ein Klick auf ein anderes Element dazu führen kann, dass das infoWindow aus anderen Gründen verworfen wird ... ohne dass das Ereignis closeclick
ausgelöst wird.
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);
... Wenn Sie buchstäblich nur darauf achten, ob die infoWindow
mit der Schaltfläche "X" geschlossen wurde, ist die Überwachung von closeclick
in Ordnung. Es gibt jedoch andere Gründe, warum es geschlossen wurde.
Versuche dies:
var closeBtn = $('.gm-style-iw').next();
closeBtn.click(function(){
//other things you want to do when close btn is click
that.infowindow.close();
});
Ich überschreibe diese Klick-Funktion, da der Klick-Button in Safari nicht funktioniert, nachdem ich die CSS/Position geändert habe.