2012-10-31 56 views
1

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

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

我有位置数据的列表,也有lacation对象不同的有用的属性为我呈现在谷歌地图,就像纬度,经度和时间等..

我想创建一个Google每500ms就会标记一次Marker(*动态更改间隔)以模拟地图上的路径路径,但每次获得相同的位置数据时都如此。

这里的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

未经测试:

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