我正在开发一个网络应用程序。
我有一个Google地图,在其中从一个数组中添加多边形。我循环遍历该数组并将多边形添加到地图上。我还需要为多边形单击添加事件侦听器并警报多边形的位置。
这是我正在做的事情。
这是我正在做的事情。
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
//Loop on the polygonArray
for (var i = 0; i < polygonArray.length; i++) {
//Add the polygon
var p = new google.maps.Polygon({
paths: polygonArray[i],
strokeWeight: 0,
fillColor: '#FF0000',
fillOpacity: 0.6,
indexID: i
});
p.setMap(map);
//Add the click listener
google.maps.event.addListener(p, 'click', function (event) {
//alert the index of the polygon
alert(p.indexID);
});
}
问题
多边形都能正确地绘制。然而问题在于,当我尝试点击一个多边形时,它总是显示最后一个索引。就像只点击了添加的最后一个多边形。我认为当我添加新的监听器时,它会覆盖旧的监听器。如何为每个添加的多边形添加一个监听器,以便警报正确的索引?
谢谢
function(event)
闭包以及循环块都共享同一个p
。因此,当循环执行时,p
绑定到最后创建的多边形。我会使用polygonArray.forEach
来分离变量。 - Ross Rogerslet
而不是var
。 - Amir Sasson