在Google地图上模拟路线

时间:2012-10-31 10:02:56

标签: javascript google-maps-api-3

当我想在Google地图上模拟路线路径时,我遇到了一些问题。

  • JavaScript 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,但我真的不明白它是如何工作的。我想找到一种模式来解决我的两个问题。谢谢你提前。

1 个答案:

答案 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];
            }