2012-01-12 5 views
0

JavaでLocation.distanceBetweenメソッドを正しく使用して、複数のポイントで距離を取得する方法を知りました。Javaの複数のジオロケーション間の距離を計算する

latitudeListとlongitudeListがあり、for = loopを使って、そのメソッドをどのように(効果的に)使用するとしますか? 距離の値が間違っているようです。

私が現在使用しているコードは(それは厄介だが、それはオールライトに見えた):

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

のようにコードを修正するには、 '' resultList [0] ''でそれを返します。また、すべての繰り返しで新しい '' resultList''を作成する必要はありません。 – harism

+0

申し訳ありませんが、私は入力しました。この投稿の名前を英語に変更しましたので、ここのユーザーは私が実際に行ったことを理解できます.../ – Joetjah

+0

結果は間違っていると思いますか? –

答えて

1

なぜしていますか?

result = result+resultat[0] ??? 

あなたの距離はresultList [0]です。あなたが `` resultaat [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() - 1'ではなく' size() 'に至るまで繰り返します。 –

+0

いいえ、彼はn = latitudeList.size()点を持ちますが、それらの間にはn-1の距離しかありません。最大のkはn-2であり、したがって最後の反復におけるk + 1は点n-2 + 1、すなわち点n-1を参照する。これは、リスト内の索引付けが0ベースであるため、正しいです。 – Stefan

+0

すみません、それはタイプミスでした。実際には 'result = result + resultList [0];' :(: – Joetjah

関連する問題