2012-10-31 60 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]; 
      }