Saya sedang menghitung jarak antara dua GeoCoordinate. Saya menguji aplikasi saya terhadap 3-4 aplikasi lain. Saat saya menghitung jarak, saya cenderung mendapatkan rata-rata 3,3 mil untuk perhitungan saya sedangkan aplikasi lain mendapatkan 3,5 mil. Ini perbedaan besar untuk kalkulasi yang saya coba lakukan. Apakah ada perpustakaan kelas yang bagus di luar sana untuk menghitung jarak? Saya menghitungnya seperti ini di C #:
public static double Calculate(double sLatitude,double sLongitude, double eLatitude,
double eLongitude)
{
var radiansOverDegrees = (Math.PI / 180.0);
var sLatitudeRadians = sLatitude * radiansOverDegrees;
var sLongitudeRadians = sLongitude * radiansOverDegrees;
var eLatitudeRadians = eLatitude * radiansOverDegrees;
var eLongitudeRadians = eLongitude * radiansOverDegrees;
var dLongitude = eLongitudeRadians - sLongitudeRadians;
var dLatitude = eLatitudeRadians - sLatitudeRadians;
var result1 = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) +
Math.Cos(sLatitudeRadians) * Math.Cos(eLatitudeRadians) *
Math.Pow(Math.Sin(dLongitude / 2.0), 2.0);
// Using 3956 as the number of miles around the earth
var result2 = 3956.0 * 2.0 *
Math.Atan2(Math.Sqrt(result1), Math.Sqrt(1.0 - result1));
return result2;
}
Apa yang bisa saya lakukan salah? Haruskah saya menghitungnya dalam km dulu, baru kemudian mengubahnya menjadi mil?