Google Maps marker.getPosition仅使用最后的合作伙伴

时间:2013-08-01 11:08:00

标签: javascript google-maps google-maps-markers

我从XML列表导入地图数据并将其放在markerArray中,然后调用createMarkers(); 标记出现在地图上,但点击始终会转到列表中的最后一个标记。

所有帮助表示赞赏。

function createMarkers() {
for (i=0; i<markerArray.length; i++){
 var marker = new google.maps.Marker({position:markerArray[i].latlng, map:map, title:markerArray[i].label, icon:images[markerArray[i].type]});
 google.maps.event.addListener(marker, 'click', function() {
        map.setZoom(9);
  map.setCenter(marker.getPosition());
    }); 
}

1 个答案:

答案 0 :(得分:3)

每次循环迭代都重新定义

marker。绑定到'click'的函数应该包含在具有marker的本地副本的闭包中。我必须做一次类似的事情并使用它:

 google.maps.event.addListener(marker, 'click', 
   (function(marker_inner) {
      return function() {
        map.setZoom(9);
        map.setCenter(marker_inner.getPosition());
      }
   })(marker)
 );