2012-01-12 135 views
0

我想知道如何正確使用Java中的Location.distanceBetween方法來獲取通過多個點的距離。假設你有一個latitudeList和longitudeList,你可以使用for =循環遍歷它們,如何使用該方法(有效地)? 我似乎得到了錯誤的距離值。計算Java中多個地理位置之間的距離

我目前使用的代碼(這是混亂的,但它似乎還好吧):

float result = 0; 
float[] resultList = new float[1]; 
for (int k = 0; k < latitudeList.size() - 1; k++) 
{ 
    Location.distanceBetween(latitudeList.get(k), longitudeList.get(k), latitudeList.get(k+1), longitudeList.get(k + 1), resultList);       
    result = result + resultList[0]; 
    resultList = new float[1]; 
} 

我做了什麼錯?

謝謝你的幫助。

+0

你似乎使用''resultaat [0]''作爲結果值而distanceBetween(..)方法返回它在''resultList [0]''。也不需要在每次迭代中創建新的''resultList''。 – harism 2012-01-12 14:25:09

+0

對不起,我錯了。我將這個帖子的名字改爲英文,這樣用戶可以理解我實際做了什麼......所以,問題依然存在:/ – Joetjah 2012-01-12 15:42:30

+0

是什麼讓你認爲結果不正確? – 2012-01-12 15:53:18

回答

1

你爲什麼要這樣做?

result = result+resultat[0] ??? 

while your distance is in resultList [0]。

修改代碼這樣

float result = 0; 
float[] resultList = new float[1]; 
for (int k = 0; k < latitudeList.size() - 1; k++) 
{ 
    Location.distanceBetween(latitudeList.get(k), longitudeList.get(k),   latitudeList.get(k+1), longitudeList.get(k + 1), resultList);       
    result = result + resultList[0]; 

} 
+0

我認爲海報也需要將'<'改爲'<='或者一直迭代到'size()'而不是'size() - 1'。 – 2012-01-12 14:44:17

+0

不,他有n = latitudeList.size()點,但它們之間只有n-1個距離。最大的k是n-2,因此最後迭代中的k + 1參考點n-2 + 1,即點n-1。這是正確的,因爲列表中的索引是基於0的。 – Stefan 2012-01-12 15:06:39

+0

對不起,這是一個錯字。它實際上是說'result = result + resultList [0];':( – Joetjah 2012-01-12 15:40:50

相關問題