0

在我使用 Google maps 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 循环中最后一个标记的标记引用。所以只有最后一个标记显示信息窗口。

如何更改我的代码,以便每次标记单击都会生成一个信息窗口?

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 回答