【发布时间】:2013-07-27 06:34:26
【问题描述】:
我想为每个 google 标记的 DROP 动画创建一个超时,但我认为标记和数组项的关闭代码是冲突的。我对闭包不太了解,并且有点卡在这个问题上。
我可以让它们一次全部掉落。
但我希望在每个标记为 100 毫秒后有一个超时。
这是我认为可行的
...
//Loop through nc array
for (var i = 0; i < nc.length; i++) {
//Create 100 ms rule on marker creation
setTimeout(function () {
//Create marker
var marker = new google.maps.Marker({
position: nc[i],
map: map,
title: "tron" + i,
animation: google.maps.Animation.DROP,
});
}, i * 100);
//Creating the closure
(function (i, marker) {
//Add infowindow
google.maps.event.addListener(marker, 'click', function () {
if (!infowindow) {
infowindow = new google.maps.InfoWindow();
}
//Setting content of info window
infowindow.setContent('<h2>Tron lives | ' + i + '</h2>');
infowindow.open(map, marker);
});
})(i, marker);
};
...
但这不起作用。我认为一旦在循环中创建标记,就会在创建过程中设置超时,这将创建下雨标记效果。
【问题讨论】:
-
尝试将标记创建移动到单独的函数中。看看这个答案,看看它是否有帮助:stackoverflow.com/questions/8576515/…
标签: javascript google-maps-api-3