2012-08-05 107 views
2

我正在創建緯度/經度座標的ArrayList,然後想要將它們全部取出並找出總行程。但我目前的代碼一直返回0.有人可以告訴我我做錯了嗎?獲取經緯度和緯度的距​​離

public float getDistanceTraveled() { 
    float[] dist = new float[1]; 
    float totalDist = 0; 

     for(int i = 0; locs.size()-2 >= i; i++) { 
      double lat1 = locs.get(i).getLatitude(); 
      double lon1 = locs.get(i+1).getLongitude(); 
      double lat2 = locs.get(i).getLatitude(); 
      double lon2 = locs.get(i+1).getLongitude(); 

      Location.distanceBetween(lat1, lon1, lat2, lon2, dist); 
      totalDist += dist[0]; 
      Log.d("", "totaldist " + String.valueOf(totalDist)); 

     } 
     return totalDist;  
} 
+0

記錄'lat1','lon1','lat2'和'lon2'並查看它們的值是否正確。 – 2012-08-05 02:39:30

回答

4

看起來像一個小O型的情況下,應該不會是這個:

double lat1 = locs.get(i).getLatitude(); 
double lon1 = locs.get(i).getLongitude(); 
double lat2 = locs.get(i+1).getLatitude(); 
double lon2 = locs.get(i+1).getLongitude(); 

編輯:看起來像莫里森打我給它

+0

啊!哈哈。人物。謝謝!它的工作現在。 – bwoogie 2012-08-05 03:31:28

2

因此,你得到的是同一點之間的距離還是從一點到另一點的距離?

 double lat1 = locs.get(i).getLatitude(); 
     double lon1 = locs.get(i+1).getLongitude(); 
     double lat2 = locs.get(i).getLatitude(); 
     double lon2 = locs.get(i+1).getLongitude(); 
0

這個問題你方法是,這將會像烏鴉一樣蒼蠅,但是如果我從一個航點出發,轉了一圈並沿着另一條街道走下去,我可能看起來像是在走2英里時走了100米。

因此,除非您需要足夠數量的積分來處理道路曲線和人員進入不同道路的問題,否則與使用導航器查看距離時相比,您的號碼會有很大不同。

正如其他人提到你的錯字,我不會深入瞭解爲什麼距離爲零的細節,但你可能想要考慮你的方法。

現在,如果用戶正在步行或騎自行車,那麼您的方法可能會很好,但對於駕駛,您可能需要測試很多並且看看您是否滿意這種差異。

+0

我意識到這是烏鴉飛。這對我來說很好。 (至少現在)錯別字是問題所在。 – bwoogie 2012-08-05 03:32:00