43

助けてください。

情報ウィンドウが開いているかどうかを確認したい。

例えば:

if (infowindow.isOpened)
{
   doSomething()
}

また

if (infowindow.close)
{
   doAnotherthing();
}

これを行う方法がわかりません

4

5 に答える 5

65

これは文書化されていない機能であるため、予告なしに変更される可能性がありますが、infoWindow.close()メソッドはオブジェクトのマップを に設定しますnull(これがinfoWindow.open(map, [anchor])を渡す必要がある理由ですMap)。表示:

function isInfoWindowOpen(infoWindow){
    var map = infoWindow.getMap();
    return (map !== null && typeof map !== "undefined");
}

if (isInfoWindowOpen(infoWindow)){
    // do something if it is open
} else {
    // do something if it is closed
}

更新: これを記述するもう 1 つの潜在的に役立つ方法は、isOpen()メソッドをに追加することInfoWindow prototypeです。

google.maps.InfoWindow.prototype.isOpen = function(){
    var map = this.getMap();
    return (map !== null && typeof map !== "undefined");
}
于 2012-09-13T16:02:31.793 に答える
26

Google がこれを行うためのより良い方法を提供しない限り、infoWindow オブジェクトにプロパティを追加できます。何かのようなもの:

google.maps.InfoWindow.prototype.opened = false;
infoWindow = new google.maps.InfoWindow({content: '<h1> Olá mundo </h1>'});

if(infoWindow.opened){
   // do something
   infoWindow.opened = false;
}
else{
   // do something else
   infoWindow.opened = true;
}
于 2012-09-27T20:50:18.447 に答える
3

infowindow.getMap()infowindowが閉じている場合は null を返します。

したがって、次のように簡単に使用できます。

if (infowindow.getMap());
于 2015-07-03T14:06:36.717 に答える
2

infoWindow に対してkeyとを簡単に設定できます。valueinfoWindow.set('closed', true);

例:

const infoWindow = new google.maps.InfoWindow({
    content: 'foo',
    position: {
        lat: some_number,
        lng: some_number
    }
});

infoWindow.set('closed', true);

// Clicking on polyline for this example
// Can be marker too
polyline.addListener(
    'click',
    () => {
        if (infoWindow.get('closed')) {
            infoWindow.open(map);
            infoWindow.set('closed', false);
        } else {
            infoWindow.close();
            infoWindow.set('closed', true);
        }
    }
);
于 2019-11-26T13:31:02.320 に答える