javascript - 在 Google map 上模拟路线

标签 javascript google-maps-api-3

当我想在 Google map 上模拟路线路径时遇到一些问题。

  • JavaScript 闭包问题。
  • 如何动态更改 setTimeout 时间间隔。

我有一个位置数据列表,位置对象中有不同的有用属性可供我在 Google map 上呈现,例如纬度、经度和时间等...

我想每 500 毫秒创建一个 Google map 标记(*动态更改间隔)来模拟 map 上的路线路径,但每次我都获得相同的位置数据。

这里是 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);
}

代码运行时,会打印 3 次 2012。

经过研究,这可能是因为 JavaScript closure,但我不太明白它是如何工作的。我想找到一种模式来解决我的两个问题。提前致谢。

最佳答案

未经测试:

// 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];
            }

关于javascript - 在 Google map 上模拟路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13155418/

相关文章:

javascript - 如果我的点击监听器没有冒泡,我如何使用点击监听器定位动态添加的 HTML 元素的父元素?

javascript - 使用 javascript 访问 svg 中的当前位置

Grails 自定义监听器,更新属性会生成其他事件吗?

android - 这是 MapView 错误吗?

javascript - Google Maps API - 多个 map 的多个标记

node.js - 如何使用 Node.js/Express/MongoDB 向 Google map 添加标记?

javascript - Jquery-每个循环不更新变量

javascript - 如何使用 d3.js 向我的图表添加标签?

javascript - 使用 Jquery 的表单元素的占位符

google-maps - 如何在 Google Places API 上唯一标识一个地点