2011-07-21 24 views
62

Google Haritalarım arayüzünde açık olan herhangi bir ve tüm pencereleri takip etmeyi seviyorum (adlarını bir dizide saklıyorum), ancak bunları kapalıyken dizilerimden nasıl çıkaracağımı anlayamıyorum Her birinin sağ üst köşesinde "x".Google Maps API v3 infowindow kapanış etkinliği/geri çağrısı?

Dinleyebileceğim bir çeşit geri arama var mı? Ya da belki addListener("close", infowindow1, etc gibi bir şey yapabilirim? Eğer olup olmadığını doğrulamak gerektiğinde size yardımcı olabilir infowindows closeclick çağrı için bir olay var

+0

Cevabınızı güncelledim – Jorge

cevap

134

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

Yakında başka bir işaretçi tıklandığında ve işaretleyici otomatik olarak kapatıldığında, bu bilgi tetiklenmez. Bilgi penceresinin haritanın görünen sınırlarında olduğundan emin olmak için bir kaydırma işlemi gerçekleştirildiğinde olduğu gibi . –

7

burada bulduk tek tutarlı çözüm infoWindow bir işaretçi korumak ve onun .getMap() yöntemi kontrol etmektir kapatıldı.

Bunun nedeni, başka bir öğenin tıklatılması, infoWindow'un closeclick olay ateşlemesi olmaksızın başka nedenlerle işten çıkarılmasına neden olabilir.

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

... infoWindow sonra closeclick gayet izleme "X" düğmesini kullanarak kapatıldı eğer gerçekten sadece veriyorsan. Bununla birlikte, başka nedenler de olabilir ya da kapatılmış olabilir.

0

bu deneyin: Bundan css/konumunu değiştirmek sonra tıklama butonu safari çalışmaz çünkü

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

Bu tıklama fonksiyonu üzerine.