2011-07-21 18 views
62

Me gusta hacer un seguimiento de todas las ventanas emergentes que están abiertas en mi interfaz de Google Maps (almaceno sus nombres en una matriz), pero no puedo encontrar la manera de eliminarlas de mi matriz cuando se cierran a través del "x" en la esquina superior derecha de cada uno.Google Maps API v3 infowindow cerrar evento/devolución de llamada?

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

+0

He actualizado mi respuesta – Jorge

Respuesta

134

hay un evento para las ventanas de información llaman closeclick que puede ayudarle a

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 
}); 
+1

Tenga en cuenta que esto no se dispara cuando se hace clic en otro marcador cercano y ese marcador se cierra automáticamente ... como cuando se realiza un desplazamiento para asegurarse de que la ventana de información se encuentra en los límites visibles del mapa . –

7

La única solución coherente que he encontrado aquí es retener un puntero a la infoWindow y comprobar su método .getMap() siempre que lo necesite para validar si ha sido cerrado.

La razón de esto es que hacer clic en otro elemento puede hacer que la ventana de información sea descartada por otros motivos ... sin el evento closeclick activando el evento.

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, sólo se preocupan si el infoWindow se cerró con el botón "X", a continuación, monitoreando closeclick está muy bien. Sin embargo, hay otras razones por las cuales puede ser o ha sido cerrado.

0

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(); 
}); 

que sobrescribir esta función debido a que la clic clic de botón no funciona en Safari después de cambiar el css/posición de la misma.

Cuestiones relacionadas