当我想在Google地图上模拟路线路径时,我遇到了一些问题。
closure
问题。setTimeout
时间间隔。我有一个位置数据列表,我在lacation对象中有不同的有用属性供我在谷歌地图上呈现,如Lat,Lng和Time等......
我想每隔500毫秒创建一个谷歌地图标记(*动态更改间隔),以模拟地图上的路径路径,但每次我获得相同的位置数据。
这是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
,但我真的不明白它是如何工作的。我想找到一种模式来解决我的两个问题。谢谢你提前。
答案 0 :(得分:0)
<强>未测试强>
// Global variable
var dataArray = [{ Time: 2010, Lat: 1.36046, Lng: 103.897018 }, { Time: 2011, Lat: 1.352566, Lng: 103.855768 }, { Time: 2012, Lat: 1.349477, Lng: 103.802553}];
function playback() {
for (i = 0; i < dataArray.length; i++) {
var data = getData(i);
setTimeout(function () { printlocation(data); }, i * 500);
}
}
function getData(ix) {
return dataArray[ix];
}