在我使用谷歌地图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。
如何更改代码,以便每次标记点击都会生成InfoWindow?
答案 0 :(得分: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);
}