それぞれ緯度と経度の値を持つ 2 つの GPS 位置間の距離を計算したいと考えています。計算は、近距離の結果に対して正確でなければなりません。例えば。< 300m。Google Earth を使用する場合 (コードの coord を参照)、距離は ~136m です。記事で提供されているソリューションを使用すると、http://www.movable-type.co.uk/scripts/latlong.html (haversine 式) の結果はそれに近くありません。
使用コード:
public void GpsCalc(){
double d = getDistance(51.342299,4.371359, 51.342490,4.371997);
Log.e("GpsCalc", String.valueOf(d));
}
public static double getDistance(double lat1, double lng1, double lat2, double lng2){
double R = 6371; // earth’s radius (mean radius = 6,371km)
double dLat = Math.toRadians(lat2-lat1);
double dLon = Math.toRadians(lng2-lng1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double dr1 = R * c;//in radians
Log.e("getDistance-dr1", String.valueOf(dr1));
return dr1;
}
多少の変更があるはずですが、見えません。