HTMLeando: para desarrolladores Web

Pregunta


¿Cómo calcular la distancia entre dos puntos conocidas las coordenadas? 

Responder esta pregunta por dudin el 2009-11-16
En una aplicación con Google Map tengo en la base de datos las coordenadas de varios puntos de la ciudad y al mostrar uno de ellos quisiera brindar las distancias en Km a los otros puntos más cercanos. ¿Cómo hacer este cálculo a partir de de los valores de coordenadas en decimal usando PHP?

Respuestas

Thumb_up
Thumb_down

0%
0%
La siguiente función devuelve el valor de la distancia tanto en kilómetros como millas:

function distance($lat1, $lng1, $lat2, $lng2, $miles = true)
{
	$pi80 = M_PI / 180;
	$lat1 *= $pi80;
	$lng1 *= $pi80;
	$lat2 *= $pi80;
	$lng2 *= $pi80;
 
	$r = 6372.797; // mean radius of Earth in km
	$dlat = $lat2 - $lat1;
	$dlng = $lng2 - $lng1;
	$a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlng / 2) * sin($dlng / 2);
	$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
	$km = $r * $c;
 
	return ($miles ? ($km * 0.621371192) : $km);
}
Trozo de código tomado de Snipplr.com. Enviado por tylerhall el 24-4-2007


También puede realizarze el cálculo en la misma consulta SQL:
 
SELECT (acos(sin(radians(LATITUD_1)) * sin(radians(LATITUD_2)) + 
cos(radians(LATITUD_1)) * cos(radians(LATITUD_2)) * 
cos(radians(LONGITUD_1) - radians(LONGITUD_2))) * 6378) AS
distanciaPunto1Punto2;
 

Referencias:
- http://www.movable-type.co.uk/scripts/latlong.html
- http://snipplr.com/view/2531/calculate-the-distance-between-two-coordinates-latitude-longitude/
- http://www.tufuncion.com/distancia-coordenadas
por Anónimo el 2009-11-16

Anónimo:   Entrar


Consejo: Sé tan específico y descriptivo como puedas. Comparte tu experiencia personal o tus conocimientos.
Puedes investigar para completar tu respuesta.

Puedes poner directamente trozos de código usando las etiquetas [code=php] y [/code] o incrustar desde Snipplr.com [snippet=id_snippet]

Compartir: WebeameMeneame Delicious Digg

Preguntas relacionadas