1

私は多くの解決策を読み、いくつか試しましたが、私のスクリプトではそれを成し遂げることができません。

別のマーカーがクリックされたときにアクティブな情報ウィンドウを閉じるのが好きです。

コードの一部:

        for (var i = 0; i < locations.length; i++) {
          var centrum = locations[i];
          var myLatLng = new google.maps.LatLng(centrum[1], centrum[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              animation: google.maps.Animation.DROP,
              icon: image,
              shape: shape,
              title: centrum[0],
              zIndex: centrum[3]
          });
          marker['infowindow'] = new google.maps.InfoWindow({
              content: '<b>Informatie:</b><br>' + centrum[0]
          });
          google.maps.event.addListener(marker, 'click', function() {
              marker['infowindow'].close(); // has to close another active window
              this['infowindow'].open(map, this);
          });
        }

誰かがヒントかそれ以上... 解決策はありますか?

ありがとう。

4

2 に答える 2

3

マーカーを配列に保持し、現在のウィンドウを開く前にすべてのウィンドウを閉じる関数の呼び出しを追加します。

function closeInfos() {
    for(var i=0; i<markers.length; i++)
    {
        markers[i]['infowindow'].close();
    }
}

編集:

コードを使用すると、次のようになります。

var markers = [];
for (var i = 0; i < locations.length; i++) {
          var centrum = locations[i];
          var myLatLng = new google.maps.LatLng(centrum[1], centrum[2]);
          var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              animation: google.maps.Animation.DROP,
              icon: image,
              shape: shape,
              title: centrum[0],
              zIndex: centrum[3]
          }));
          marker['infowindow'] = new google.maps.InfoWindow({
              content: '<b>Informatie:</b><br>' + centrum[0]
          });
          markers.push(marker);
          google.maps.event.addListener(marker, 'click', function() {
              closeInfos();
              this['infowindow'].open(map, this);
          });
        }
于 2013-01-30T19:25:54.803 に答える
1

次のような変数に格納することで、infowindow への参照を 1 つだけ保持します。

var infowindow = new google.maps.InfoWindow({content: "some text here..."});

それがその方法です。今、そのクラスの多くのインスタンスを作成しています..

フルフィドルをチェック

編集:

独自のコンテンツフィドルを備えた情報ウィンドウ

于 2013-01-30T19:24:08.670 に答える