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
La siguiente función devuelve el valor de la distancia tanto en kilómetros como millas:
También puede realizarze el cálculo en la misma consulta SQL:
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
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



