2012-09-08 43 views
0

在我的應用程序中使用谷歌地圖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?

回答

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); 
}