当我想在 Google 地图上模拟路线时,我遇到了一些问题。
- JavaScript
closure
问题。 - 如何
setTimeout
动态更改时间间隔。
我有一个位置数据列表,在 lacation 对象中有不同的有用属性供我在 Google 地图上呈现,例如 Lat、Lng 和 Time 等...
我想每 500 毫秒创建一个 Google 地图标记(* 动态更改间隔)来模拟地图上的路线路径,但每次我得到相同的位置数据。
以下是 JavaScript 代码:
function playback(data) {
data = [{ Time: 2010, Lat: 1.36046, Lng: 103.897018 }, { Time: 2011, Lat: 1.352566, Lng: 103.855768 }, { Time: 2012, Lat: 1.349477, Lng: 103.802553}];
for (i = 0; i < data.length; i++) {
setTimeout(function () { printlocation(data[i]); }, i * 500);
}
}
function printlocation(cur) {
alert(cur.Time);
}
当代码运行时,它会打印 2012 3 次。
经过研究,可能是因为 JavaScript closure
,但我不太了解它是如何工作的。我想找到一种模式来解决我的两个问题。先谢谢了。