代码非常简单,如下所示:
var populateGoogleMap = function (points) {
for (i = points.length - 1; i >= 0; i--) {
var marker = new google.maps.Marker({
map: map,
draggable: true,
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(point.target.x, point.target.y)
});
google.maps.event.addListener(marker, 'click', function (e) {
toggleBounce(marker);
});
nodes[i].marker = marker;
}
};
事实证明,marker
intoggleBounce(marker)
总是最后marker
一个被创建的。我考虑了一下这个问题,通过修改函数找到了解决方案。我删除了函数中的循环,并在其他地方使用循环多次调用该函数。所以基本上现在它变成了for (i = 0; i < points.length; i++) { populateGoogleMap(point); }
.
这种行为是 Google Maps API 的意图吗?我认为这可能会让很多人感到困惑,因为变量应该引用当前上下文中的变量。