2012-01-12 104 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