Ich berechne den Abstand zwischen zwei GeoCoordinates. Ich teste meine App gegen 3-4 andere Apps. Wenn ich die Entfernung berechne, erhalte ich für meine Berechnung in der Regel durchschnittlich 3,3 Meilen, während andere Apps 3,5 Meilen erhalten. Es ist ein großer Unterschied für die Berechnung, die ich durchführen möchte. Gibt es gute Klassenbibliotheken zur Berechnung der Entfernung? Ich berechne es so in 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;
}
Was könnte ich falsch machen? Soll ich es zuerst in km berechnen und dann in Meilen umrechnen?