3

私たちの多くはInfoWindow、マーカーがクリックされたときに開くコードを書いていることを知っています。ただし、InfoWindow右上のXがクリックされるまではそのままになります。つまり、関連付けられたMarker可視性をに設定するfalseと、本質的に孤立したものが作成されますInfoWindowInfoWindowまた、マップ上に同時に複数のインスタンスが表示される可能性があります。ユーザーが閉じたものをクリックするだけで十分簡単だと思いますが、非表示にすると、関連するを非表示にする必要InfoWindowがあるように感じます。MarkerInfoWindow

このシナリオに対処するために、次のようなコードを書き始めました。

google.maps.event.addListener( marker, "click", function() {
    var bubble = new google.maps.InfoWindow({
        content: buildBubbleContent( param1, param2 )
    });
    bubble.open( map, marker );
    //pretty standard stuff to here, but the next line is new (for me):
    google.maps.event.addListenerOnce( marker, "visible_changed", function() {
        bubble.close();
    });
});

これは他のみんながしていることですか?それはListenBackと呼ばれるべきデザインパターンのように感じます。Googleマップのドキュメントで対処されている問題を見たことがありません。InfoWindowこれを自動的に処理するには、より単純なメカニズムが組み込まれている必要があると思わざるを得ません。私がちょうど逃したこれを行うための標準的な方法はありますか?

4

2 に答える 2

4

単一の infoWindow の場合、マップの初期化中に常にグローバルとして作成します。私のクリックイベントは次で始まります:

if(infoWindow != null){
   infoWindow.close();
}
infoWindow.setPosition(mouseEvent.latLng);
infoWindow.setContent("....");
// etc
于 2012-04-27T10:47:15.130 に答える
0

ドキュメントを精査し、多くのコードサンプルを調べ続けましたが、他の解決策が見つからなかったため、この質問に回答済みのマークを付けています。関連付けられたマーカーがオフになっている場合に、インフォウィンドウをマップから自動的に削除する機能は確かにありません。後で誰かがより良い選択肢を見つけた場合、私は喜んで彼らの解決策をより良い答えとしてマークします。

于 2012-05-02T13:58:13.540 に答える