2013-07-19 52 views
0
for (var i = 0; i < locs.length; i++) { 
       var marker = new google.maps.Marker({ 
        position: new google.maps.LatLng(locs[i][0], locs[i][1]) 
        , map: map 
        , title: "Hello World!" 
        , icon: iconImage 
        , clickable: true 
       }); 

       marker.info = new google.maps.InfoWindow({ 
        content: contentString 
       }); 

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

所有标记在地图上都显示得很好,但问题是当我单击以查看信息窗口时 - 信息窗口始终显示在同一标记上。有什么问题?显示在同一标记上的信息窗口

回答

0

由于您的标记变量是不是你的foreach循环的范围之内持续,我认为Maps API是不是跟踪他们的正常工作。使用标记来保存数组中的活动标记是一种很好的做法,这样您可以稍后处理它们(或以其他方式管理它们)。尝试是这样的:

var markers = Array(); //make sure this is scoped properly 

for (var i = 0; i < locs.length; i++) { 
    var marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(locs[i][0], locs[i][1]) 
     , map: map 
     , title: "Hello World!" 
     , icon: iconImage 
     , clickable: true 
    }); 

    var index = markers.push(marker) -1; 

    markers[index].info = new google.maps.InfoWindow({ 
     content: contentString 
    }); 

    google.maps.event.addListener(markers[index], 'click', function() { 
     marker.info.open(map, marker); 
    });   
} 
相关问题