Calcular distancia entre dos puntos en PHP

Función PHP para calcular la distancia real entre dos puntos con sus coordenadas. Cálculo en Kilómetros, Millas o Millas náuticas.

Con la siguiente función PHP podrás calcular la distancia entre dos localizaciones conociendo sus latitudes y longitudes. 

Su uso es realmente útil si estás creando aplicaciones web con servicios de geolocalización como Google Maps.

Además, como segundo parámetro de entrada podrás indicar la unidad en la que desees la distancia, ya sean kilómetros, millas o millas náuticas indicando 'K', 'M' y 'N' respectivamente.

function distance($lat1, $lon1, $lat2, $lon2, $unit) {

  $theta = $lon1 - $lon2;
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;
  $unit = strtoupper($unit);

  if ($unit == "K") {
    return ($miles * 1.609344);
  } else if ($unit == "N") {
      return ($miles * 0.8684);
    } else {
        return $miles;
      }
}

Ejemplos de uso para calcular la distancia entre dos coordenadas

A continuación te dejo unos ejemplos de uso de la función y con las distintas unidades de medida.

$punto1 = [32.9697, -96.80322];
$punto2 = [29.46786, -98.53506];
//para millas
echo distance($punto1[0], $punto1[1], $punto2[0], $punto2[1], "M") . " Millas<br>";
//para kilómetros
echo distance($punto1[0], $punto1[1], $punto2[0], $punto2[1], "K") . " Kilómetros<br>";
//para millas náuticas
echo distance($punto1[0], $punto1[1], $punto2[0], $punto2[1], "N") . " Millas náuticas<br>";

Conclusión de calcular distancia entre coordenadas en PHP

Espero que te haya servido de ayuda este snippet PHP. Yo lo utilizo comunmente para ciertos desarrollos para tiendas online en las que, por ejemplo, quiero mostrar las tiendas más cercanas a un usuario que comparte su localización.

Por último, si te ha resultado útil (espero que sí :D), te agradecería que lo compartas o le des a like para apoyar la creación de más artículos de este tipo.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.