2011-07-21 14 views
62

私は自分のGoogle Mapsインターフェースで開いているすべての情報ウィンドウ(私はその名前を配列に保存しています)を追跡したいのですが、私がそれらを配列経由で閉じたときに配列からそれらを削除する方法はわかりませんそれぞれの右上隅に "x"が表示されます。Google Maps API v3情報ウィンドウ閉じるイベント/コールバック?

何かコールバックがありますか?あるいは、私は addListener("close", infowindow1, etcのようなことをすることができますか?あなたがいるかどうかを検証する必要がある時はいつでもあなたを助けることができる情報ウィンドウがcloseclickを呼び出すためのイベントがあります

+0

私の回答を更新しました – Jorge

答えて

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

近くの別のマーカーをクリックしてマーカーが自動的に閉じられたときに起動しないことに注意してください...情報ウィンドウが地図の可視範囲内にあることを確認するためにスクロールが行われる。 –

7

私はここに見つけた唯一の一貫したソリューションをinfoWindowへのポインタを保持し、その.getMap()方法を確認することですそれは閉じられています。

これは、別の要素をクリックすると、closeclickイベントが発生せずに、infoWindowが他の理由で破棄される可能性があるためです。

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が「X」ボタンを用いて閉じた場合は、文字通りだけにしてcloseclickを監視することは結構です、気になります。しかし、それが閉鎖されている、または閉鎖されている他の理由がある。

0

これを試してみてください:私はそれのCSS /位置を変更した後にクリックボタンがSafariで動作しませんので、

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

が、私はこのクリック機能を上書きします。

関連する問題