2

aこれが繰り返される質問であることを私は知っています、

DjangoWebベースのアプリケーションでgooglemapv3を使用しています。私が使用している場所Markers, Infowindow and polyline。マーカーをクリックして情報ウィンドウごとにコンテンツを表示した場合を除いて、すべて正常に機能します。前に開いた情報ウィンドウが閉じていませんでした。

私は自分のマップコードを投稿しています(スクリプト部分のみ、または有用なもの):

var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],"Event Detail",myHtml);

これmyHtmlは、情報ウィンドウのコンテンツを含む変数です。ここでは変数を定義しませんでした。だからそれを無視します。

    marker.setMap(map);
    }

    var flightPath = new google.maps.Polyline({
                 path: flightPlanCoordinatesSet,
                 strokeColor: "#FF0000",
                 strokeOpacity: 1.0,
                 strokeWeight: 2
                  });
    flightPath.setMap(map);
}

function add_marker(lat,lng,title,box_html) {
var infowindow = new google.maps.InfoWindow({
    content: box_html
});

var marker = new google.maps.Marker({
      position: new google.maps.LatLng(lat,lng),
      map: map,
      title: title
});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,this);
});   

return marker;
}
4

1 に答える 1

3

複数のinfoWindowsの代わりに、1つのインスタンスのみを使用します。

マーカーをクリックするときは、最初に情報ウィンドウを閉じてから、新しいコンテンツを設定して情報ウィンドウを開きます。

function add_marker(lat,lng,title,box_html) 
{
  //create the global instance of infoWindow 
  if(!window.infowindow)
  {
    window.infowindow=new google.maps.InfoWindow();
  } 

  var marker = new google.maps.Marker({
      position: new google.maps.LatLng(lat,lng),
      map: map,
      title: title
  });

  google.maps.event.addListener(marker, 'click', function() {
    infowindow.close();
    infowindow.setContent(box_html);
    infowindow.open(map,this)
  });   

  return marker;
}
于 2012-07-11T08:17:11.183 に答える