【Android】2点間の距離を求めるLocation#distanceBetween
Androidアプリ開発において,2点間の距離を求めるにはLocation#distanceBetween
メソッドを使用します.
が,このメソッドは距離の受け取り方が若干特殊でハマりました^^;
というわけでメモを残しておきます.
2点間の距離を求めるメソッド
2点間の距離を求めるには,Location#distanceBetween()
メソッドを使用します.
下記のサンプルのように使用します.
// 始点と終点を指定 double startLatitude = 40.0; double startLongitude = 135.0; double endLatitude = 40.1; double endLongitude = 135.5; // 結果を格納するための配列を生成 float[] results = new float[3]; // 距離計算 Location.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude, results); // 結果を表示 Log.v("TEST", "results[0]: " + results[0]); // 距離(メートル) Log.v("TEST", "results[1]: " + results[1]); // 始点から終点までの方位角 Log.v("TEST", "results[2]: " + results[2]); // 終点から始点までの方位角
上記サンプルを実行すると,logcatに以下の表に表示されます.
V/TEST﹕ result[0]: 56124.895 V/TEST﹕ result[1]: 8.146392 V/TEST﹕ result[2]: 8.07599
メソッド自身は返り値を持たない
注意したいのは,メソッド自身は返り値を持たないということです. つまり,以下のような書き方はできません.
// この書き方はNG float distance = Location.distanceBetween(startLatitude, startLongitude, endLatitude, endLongitude, results);
じゃあどこから距離を取得するのかといえば,results[]
という第5引数からになります.
results | 中身 |
---|---|
results[0] | 距離(メートル) |
results[1] | 始点から終点までの方位角 |
results[2] | 終点から始点までの方位角 |
このため,予めresults[]
配列を生成しておく必要があります.
サイズは3にしておくのが無難です.
(もし,1にした場合は距離だけを取得できる)
ちょっとややこしいですが,使い方自体は簡単なメソッドですね!