İki GeoCoordinate arasındaki mesafeyi hesaplıyorum. Uygulamamı diğer 3-4 uygulamada test ediyorum. Mesafeyi hesaplarken, diğer uygulamalar 3.5 mil alırken, hesaplama için ortalama 3.3 mil alıyorum. Yapmaya çalıştığım hesaplama için büyük bir fark var. Mesafeyi hesaplamak için orada iyi sınıf kütüphaneleri var mı? Ben C # olarak böyle hesaplıyorum:
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;
}
Neyi yanlış yapabilirdim? Önce km cinsinden hesaplayıp mil mi dönüştürmeliyim?