Calculo de distancia entre dos coordenadas geográficas

Los valores de latitud y longitud en la siguiente formula deben ser proveídos en radianes:  Valor = Grados * PI / 180
El numero: 6378.137 es el diámetro de la tierra en kilómetros de acuerdo al sistema WGS84. Use 3963.191 para millas.

D = 6378.137 * ACos( Cos( Lat1 ) * Cos( Lat2 ) * Cos( Lon2 - Lon1 ) + Sin( Lat1 ) * Sin( Lat2 ) )
 

Si no dispone de la función ACos, probablemente tendrá la función Atn, la siguiente formula realiza el calculo vía ArcTan.
En esta formula se proveen los datos Latitud y Longitud sin convertir a radianes.
 

D = 6378.137 * Atn( Sqr( ( 1 - ( Sin( Lat1 / 57.29577951 ) * Sin( Lat2 / 57.29577951 ) + Cos( Lat1 / 57.29577951 ) * Cos( Lat2 / 57.29577951 ) * Cos( Lon2 / 57.29577951 - Lon1 / 57.29577951 ) ) ^2 ) ) / (Sin ( Lat1 / 57.29577951 ) * Sin( Lat2 / 57.29577951 ) + Cos( Lat1 / 57.29577951 ) * Cos( Lat2 / 57.29577951 ) * Cos( Lon2 / 57.29577951 - Lon1 / 57.29577951 ) ) ) 

 


 

Ejemplo de código Java ASP C+ C# Perl PHP

 

 

 

Función integrada en Google Maps (tm):

1) La biblioteca de geometría debe cargarse en la definición del mapa:

 

<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>

 

2) Calcula directamente en tu script usando la función computeDistanceBetween que es parte de la librería de geometría. El resultado es en metros por lo que convertimos a Km. y reducimos a tres decimales.

Dist = google.maps.geometry.spherical.computeDistanceBetween(p1, p2); //retorna metros
Km   = (Dist / 1000).toFixed(3);