使用数组在谷歌地图中添加监听器

时间:2012-11-18 22:39:04

标签: google-maps-api-3

我有一个关于使用数组在谷歌地图api中添加监听器到标记的问题。看来我们不能直接使用迭代来添加监听器,但可以调用一个函数来做到这一点。我搜索互联网,发现这是一个范围问题。但我不明白是什么原因。谁能给我一个明确的解释?谢谢!

works version
function updateM(m) {
google.maps.event.addListener(m, 'click', function() {
  infowindow.open(map,m);
  });
}
for(i=0;i<2;i++)
{
marker[i].setMap(map);
updateM(marker[i]);
}

and 

do not work version
for(var i=0;i<2;i++)
{
marker[i].setMap(map);
google.maps.event.addListener(marker[i], 'click', function() {
  infowindow.open(map,marker[i]);
  });
}


}

1 个答案:

答案 0 :(得分:1)

在JavaScript中,没有block范围,只有function scope存在。因此,通过将addListners代码包装在新函数中,可以确保"i"的值保持不变。