Tema: FAQ's de PHP
Ver Mensaje Individual
  #178 (permalink)  
Antiguo 05/06/2007, 15:39
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 21 años, 10 meses
Puntos: 34
Re: FAQ's de PHP

Pregunta: Puedo saber la distancia de una coordenada a otra?
Respuesta: usando la siguiente función:

Código PHP:
<?
#By nicolaspar 2007
function distancia($latitud1, $longitud1, $latitud2, $longitud2, $millas = true){
    
$pi180 = M_PI / 180;
    
#Transformo las coordenadas en radiales
    
$latitud1 *= $pi180; $longitud1 *= $pi180; $latitud2 *= $pi180; $longitud2 *= $pi180;
    
$r = 6378.139; // radio medio de tierra por kilómetro (WGS84)
    
$distanciaLatitud = $latitud2 - $latitud1;
    
$distanciaLongitud = $longitud2 - $longitud1;
    
#Formula de Haversine
    
$a = sin($distanciaLatitud / 2) * sin($distanciaLatitud / 2) + cos($latitud1) * cos($latitud2) * sin($distanciaLongitud / 2) * sin($distanciaLongitud / 2);
    
#Calculo la distancia
    
$c = 2 * atan2(sqrt($a), sqrt(1 - $a));
    
$km = $r * $c;
    
#La saco en millas o en km
    
return $millas ? $km * 0.621371192 : $km;
}
/**
*    Ej,
*    Desde Buenos Aires Observatorio Lat -34.56667 | long -58.41667
*    Hasta Adelaide Airport, Oceania, Australia, Lat -34.93333 | Long 138.51667
**/
echo distancia(-34.56667, -58.41667, -34.93333, 138.51667, false) ." Km<br />";
echo 
distancia(-34.56667, -58.41667, -34.93333, 138.51667) ." Millas";
?>
__________________
Mi punto de partida es Que Bueno Lo Nuevo