Google Maps API v3 infowindow cerrar evento / devolución de llamada?


Me gusta hacer un seguimiento de todas y cada una de las ventanas de información que están abiertas en mi interfaz de Google Maps (almaceno sus nombres en una matriz), pero no puedo averiguar cómo eliminarlos de mi matriz cuando se cierran a través de la "x" en la esquina superior derecha de cada una.

¿Hay algún tipo de devolución de llamada que pueda escuchar? O tal vez pueda hacer algo como addListener("close", infowindow1, etc ?

Author: Matthieu, 2011-07-21

3 answers

Hay un evento para la llamada de infowindows closeclick que puede ayudarte

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
});
 144
Author: Jorge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-06 13:59:24

La única solución consistente que he encontrado aquí es retener un puntero al infoWindow y verificar su método .getMap() siempre que necesite validar si se ha cerrado.

La razón de esto es que al hacer clic en otro elemento puede hacer que la ventana de información sea descartada por otras razones... sin la activación del evento 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 literalmente solo le importa si el infoWindow se cerró usando el botón "X", entonces monitorear closeclick está bien. Sin embargo, hay otras razones por las que puede estar o haber estado cerrado.

 7
Author: Ben Guild,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-20 15:27:15

Prueba esto:

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

Sobrescribo esta función de clic porque el botón de clic no funcionará en safari después de cambiar el css/posición de la misma.

 1
Author: Tina Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-17 07:08:11