it-swarm.com.de

Google Maps API v3 Infowindow Ereignis/Rückruf schließen?

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? 

66
Colin

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
});
150
Jorge

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.

7
Ben Guild

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.

0
Tina Chen