0

Google マップ APIv3 を使用するアプリケーションで、ポリラインに関連付けられたマーカーをランダムに生成しようとしています。私は次のことをしました:

//Loop to add locations and draw line
var path= polyline.getPath();
for(var i=0;i<route.length;i++)   //route is an array containing some latlng's
    {
        var marker= new google.maps.Marker({position:route[i],map:map});
        path.push(route[i]);
    }

//Event Listener's
google.maps.event.addListener(marker,'click',function(event)
    {
        iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng()); 
          //iwindow is the InfoWindow variable
        iwindow.open(map,marker); 
    });  

ここでの問題は、クリック時のマーカーが常に for ループの最後のマーカーのマーカー参照を持っていることです。したがって、最後のマーカーのみが情報ウィンドウを表示します。

マーカー クリックごとに InfoWindow が生成されるようにコードを変更するにはどうすればよいですか?

4

1 に答える 1

1

コールバックは各マーカーで同じなので、ループの範囲外で定義しても問題ありません。ただし、各マーカーに個別のリスナーをアタッチする必要があるため、そのコードをループ内に配置します。

function showPopup(event) {
    iwindow.setContent("<b>Coordinates are:</b><br/>Latitude:"+event.latLng.lat()+"<br/>Longitude:"+event.latLng.lng()); 
    iwindow.open(map,marker); 
});  

for(var i=0;i<route.length;i++) {
    var marker= new google.maps.Marker({position:route[i],map:map});
    path.push(route[i]);
    google.maps.event.addListener(marker,'click',showPopup);
}
于 2012-09-08T07:39:48.400 に答える