2016-12-01 7 views
0

複数のマーカーでGoogleマップを作成しています。各マーカーに情報ウィンドウがある瞬間に、一度に1つの情報ウィンドウを開くことはできますか?一度に1つの情報ウィンドウしか開きません。

現在、マップをクリックするとすべてのウィンドウが閉じます。

私はこの質問が何度か尋ねられていることを知っていますが、コードは私とは大きく異なるようです。

// if marker contains HTML, add it to an infoWindow 
if($marker.html()) 
{ 
    // create info window 
    var infowindow = new google.maps.InfoWindow({ 
     content  : $marker.html() 
    }); 

    // show info window when marker is clicked 
    google.maps.event.addListener(marker, 'click', function() { 
     infowindow.open(map, marker); 
    }); 

    google.maps.event.addListener(map, 'click', function(event) { 
     if (infowindow) { 
      infowindow.close(); } 
     }); 

} 
+0

マーカーごとに新しいinfoWindowを作成し、それぞれの情報ウィンドウのイベントリスナーも作成しています。ほとんどの人は、infoWindowを1つだけ設定し、マーカーをクリックしたときの位置と内容を設定することでこれを回避します。これはパフォーマンス面でも最適です。それが合わない場合は、理論上、新しい情報ウィンドウを開くときにすべての情報ウィンドウを閉じることができますが、配列に格納してループする必要があります。 –

+0

[Google Maps API - 一度に1つの情報ウィンドウしか開くことができません]の複製(http://stackoverflow.com/questions/33713676/google-maps-api-only-one-infowindow-open-at-once) – geocodezip

答えて

1

これを試してみてください:1つの情報ウィンドウ(マーカーではなく、グローバル)を宣言してください。

var infoWindow; 
... 
if($marker.html()){ 
    google.maps.event.addListener(marker, 'click', function() { 
     if (infoWindow) infoWindow.close(); 
     infoWindow = new google.maps.InfoWindow({ 
     content  : $marker.html() 
     }); 
     infoWindow.open(map, marker); 
    }); 
} 
関連する問題