单击Loop中的Listeners - Array和Closure

时间:2012-12-17 01:05:09

标签: google-maps-api-3 closures clicklistener

我意识到我正在试着打开另一个关闭问题的薄冰,但我已经搜索过,找不到我的问题的答案。我有一个Google Maps API v3页面,它从一个代码块生成两个地图 - 一个以用户当前位置为中心的小地图和一个更大的地图,显示整个区域,用户的位置标记在哪里,中心与否。在地图的顶部是一个由14个矩形组成的矩形层。为了生成两个地图,我不得不将矩形放在二维数组中,矩形[1]用于“地图”,矩形[2]用于“map2”:

var rectangles = [0,1,2,3,4,5,6,7,8,9,10,11,12,13];

rectangles[1][0]=new google.maps.Rectangle({
bounds:new google.maps.LatLngBounds(new google.maps.LatLng(a, b), new google.maps.LatLng(x, y)),
map:map,
fillColor:'red',
fillOpacity: 0.3,
strokeOpacity: 0,
url: 'http://example.com',
clickable: true
});

rectangles[2][0]=new google.maps.Rectangle({
bounds:new google.maps.LatLngBounds(new google.maps.LatLng(a, b), new google.maps.LatLng(x, y)),
map:map2,
fillColor:'red',
fillOpacity: 0.3,
strokeOpacity: 0,
url: 'http://example.com',
clickable: true
});

......等等。一切正常,显示两个地图,地理定位工作。现在我想为每个矩形添加一个点击监听器,但我不确定是谁引用该数组。这就是我现在所拥有的:

for ( i = 0; i < rectangles[1].length; i++ ){
google.maps.event.addListener(rectangles[1][i], 'click', function() {
window.location.href = this.url;
});
}
for ( x = 0; x < rectangles[2].length; x++ ){
google.maps.event.addListener(rectangles[2][x], 'click', function() {
window.location.href = this.url;
});
}

这显然不起作用。我已经看到了关闭问题的各种解决方案,但我不确定我是否正在引用两个矩形数组的方向 - 或者我甚至需要定义两组不同的点击监听器。如果有人能指出我正确的方向,我真的很感激 - 如果这只是过去看似显而易见的旧地,那真的很感激。总有一个新学习者正在努力追赶。

感谢。

0 个答案:

没有答案