web-dev-qa-db-ja.com

Google Maps API v3情報ウィンドウクローズイベント/コールバック?

Google Mapsインターフェイスで開いているすべての情報ウィンドウを追跡するのが好きです(名前を配列に保存します)が、「xそれぞれの右上隅にあります。

聞くことができるコールバックはありますか?または、addListener("close", infowindow1, etc

69
Colin

ここで見つけた唯一の一貫した解決策は、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の監視は問題ありません。ただし、それが閉じられた、または閉じられた他の理由があります。

10
Ben Guild

infowindows呼び出しcloseclickのイベントがあります。

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

これを試して:

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

CSSの位置/位置を変更した後、クリックボタンがサファリで機能しないため、このクリック機能を上書きします。

0
Tina Chen