Skip to content

Instantly share code, notes, and snippets.

@maitret
Last active October 30, 2019 23:44
Show Gist options
  • Save maitret/63d194179b2407d6fc79977d1844fa9f to your computer and use it in GitHub Desktop.
Save maitret/63d194179b2407d6fc79977d1844fa9f to your computer and use it in GitHub Desktop.
/**
* Formula para sacar distancia entre dos puntos dada la latitud y longitud de dos puntos.
* Esta distancia tiene que estar dada en notación DECIMAL y no en SEXADECIMAL (Grados, minutos... etc)
* @param type $latitud 1
* @param type $longitud 1
* @param type $latitud 2
* @param type $longitud 2
* @return type, Distancia en Kms, con 1 decimal de precisión
*/
function GetGeoDistancia($lat1, $long1, $lat2, $long2){
//Distancia en kilometros en 1 grado distancia.
//Distancia en millas nauticas en 1 grado distancia: $mn = 60.098;
//Distancia en millas en 1 grado distancia: 69.174;
//Solo aplicable a la tierra, es decir es una constante que cambiaria en la luna, marte... etc.
$km = 111.302;
//1 Grado = 0.01745329 Radianes
$degtorad = 0.01745329;
//1 Radian = 57.29577951 Grados
$radtodeg = 57.29577951;
//La formula que calcula la distancia en grados en una esfera, llamada formula de Harvestine. Para mas informacion hay que mirar en Wikipedia
//http://es.wikipedia.org/wiki/F%C3%B3rmula_del_Haversine
$dlong = ($long1 - $long2);
$dvalue = (sin($lat1 * $degtorad) * sin($lat2 * $degtorad)) + (cos($lat1 * $degtorad) * cos($lat2 * $degtorad) * cos($dlong * $degtorad));
$dd = acos($dvalue) * $radtodeg;
return round(($dd * $km), 2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment