1

これは、Google マップ API v3 の情報ウィンドウに関する質問です。

現在、この関数をループしてマーカーを配置します..

function addPostCode(zip, html) 
{
   geocoder.geocode( { 'address': zip}, function(results, status) 
   {
      if (status == google.maps.GeocoderStatus.OK)
      {
         map.setCenter(results[0].geometry.location);
         var marker = new google.maps.Marker({
         map: map,
         position: results[0].geometry.location,
         name: zip
      });
});

ここで、独自の HTML を持つ情報ウィンドウを追加したいと思いますが、次の動作が必要です..

イベントによって情報ウィンドウが開かれると、現在の情報ウィンドウは閉じられ、新しい情報ウィンドウのみが表示されます。

これは可能ですか?どうすればいいですか?この問題に関するドキュメントを見つけるのは困難です..

4

4 に答える 4

3

初期化で単一の情報ウィンドウを作成します。情報ウィンドウを開きたいイベント/リスナーで、コンテンツを設定し、マップ上のマーカー/場所で情報ウィンドウを開きます。

// Initialize infowindow
var infowindow = new google.maps.InfoWindow({content: ''});

function add_marker(point, name, content)
{
   var marker = new google.maps.Marker({
      map: map,
      position: point,
      dragable: false,
      clickable: true,
      name: name
   });
   marker.content = content;
   google.maps.event.addListener(marker, 'click', function()
   {
      infowindow.content = marker.content;
      infowindow.open(map, marker);
   });
   return marker;
};

function addPostCode(zip, html) 
{
   geocoder.geocode( { 'address': zip}, function(results, status) 
   {
      if (status == google.maps.GeocoderStatus.OK)
      {
         map.setCenter(results[0].geometry.location);
         var marker = add_marker(results[0].geometry.location, zip, html)
      });
});

この質問と回答は、単一または複数の情報ウィンドウの問題で私をかなり助けてくれました:

各マーカーに InfoWindow を追加する Google Maps API v3

于 2010-08-18T14:06:34.547 に答える
1
var currentInfoWindow = ''; //Global variable

google.maps.event.addListener(marker, 'click', function()
   {
      if(currentInfoWindow != '')
      { 
        currentInfoWindow.close();
        currentInfoWindow = '';
      }
      var infoWindow = new google.maps.InfoWindow({content: 'COntent'});
      infowindow.open(map, marker);
      currentInfoWindow = infowindow;
   });
于 2012-08-23T17:41:35.347 に答える
0

これを行うには2つの方法があります...1つ目は、単一の情報ウィンドウを作成し、情報ウィンドウの.setOptionsメソッドを使用してを更新することcontentです。

これを行う2番目の方法は、コードにモジュールレベルの変数を設定して「アクティブ」ウィンドウを含めることです...次に、infoWindowが開いている場合は.close、新しいウィンドウを開く前にそのメソッドを呼び出します。

于 2010-08-18T15:22:03.070 に答える
0

この件やその他の関連する質問については、Google Maps API v3 の Google グループに問い合わせた方がよいでしょう。

私は API v3 を使用していませんが、私が知る限り、一度に開くことができる情報ウィンドウは 1 つだけなので、これは自動的に行われます。

于 2010-08-18T13:58:00.217 に答える