La fórmula de cálculo es la siguiente:
ilustrar:
1. La longitud y latitud en la fórmula se expresan en radianes;
2. Lat1 Lng1 representa la longitud y latitud del punto A respectivamente, Lat2 Lng2 representa la longitud y latitud del punto B respectivamente;
3. a=Lng1 -Lng2 es la diferencia de latitud de dos puntos; b=Lat1 - Lat2 es la diferencia de longitud de dos puntos;
4. 6378,137 es el radio de la tierra en kilómetros;
La función de implementación de C# es la siguiente:
público doble DistanceOfTwoPoints (doble lat1, doble lng1, doble lat2, doble lng2)
{
doble radLng1 = lng1 * Math.PI / 180.0;
doble radLng2 = lng2 * Math.PI / 180.0;
doble a = radLng1 - radLng2;
doble b = (lat1-lat2) * Math.PI / 180.0;
doble s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2), 2) +
Math.Cos(radLng1) * Math.Cos(radLng2) * Math.Pow(Math.Sin(b/2), 2)))* 6378,137;
s = Ronda.Matemáticas(s * 10000) / 10000;
devolver s;
}
Se aprobó correctamente después de la verificación real (la unidad del resultado devuelto es: kilómetros).