Mucho que explicar, pero posiblemente la teoría no le interese a nadie, así que pondré directamente el algoritmo para realizar el cálculo de la distancia.
Si alguien tiene curiosidad, se basa en la trigonometría esférica (y asume que la tierra tiene esta forma). Con esas premisas, el trabajo consiste en obtener la distancia entre dos puntos en la superficie de una esfera, para lo cual hay que encontrar el circulo de mayor diámetro que une ambos puntos.
Si queréis buscar información sobre el algoritmo os aconsejo la búsqueda «Great circle distance» en google, y encontraréis bastantes artículos.
El algoritmo está escrito en objective-c y extraido de una aplicación para iPhone que hemos desarrollado recientemente.
-(double)distancia:(double)lon1:(double)lat1:(double)lon2:(double)lat2 { double toRad = 0.0174532925; double dLat = (lat2-lat1) * toRad; double dLon = (lon2-lon1) * toRad; double a = sin(dLat/2) * sin(dLat/2) + cos(lat1 * toRad) * cos(lat2 * toRad) * sin(dLon/2) * sin(dLon/2); double c = 2 * atan2(sqrt(a), sqrt(1-a)); return 6371 * c; }
Hola, ese algoritmo devuelve la distancia en ? como seria para hacer le dovolver la distancia en metros, kilometros y miles.. Gracias
Hola Ivo, devuelve la distancia en Km. Para cambiar de unidades sólo hay que multiplicar el resultado por el factor correspondiente.
Gracias