"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como calcular distâncias dentro de um raio usando latitude e longitude em PHP?

Como calcular distâncias dentro de um raio usando latitude e longitude em PHP?

Publicado em 2024-11-03
Navegar:469

How to Calculate Distances within a Radius Using Latitude and Longitude in PHP?

Calculando distâncias de latitude e longitude

Neste cenário, você deseja determinar os pontos em um raio de 15 milhas do coordenadas inseridas pelo usuário. Para conseguir isso, você pode aproveitar fórmulas matemáticas para calcular distâncias.

Considere a seguinte função PHP:

function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { 

    // Calculate the angle difference
    $theta = $longitude1 - $longitude2; 

    // Calculate the distance
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2)))   
                (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * 
                cos(deg2rad($theta))); 

    // Convert to degrees
    $distance = acos($distance); 
    $distance = rad2deg($distance); 

    // Convert to miles or kilometers
    $distance = $distance * 60 * 1.1515; 

    // Round the distance
    return (round($distance,2));
}

Como alternativa, você pode utilizar uma consulta ao banco de dados para fazer isso:

$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * 
            sin((`Latitude`*pi()/180)) cos((".$latitude."*pi()/180)) * 
            cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* 
            pi()/180))))*180/pi())*60*1.1515
        ) as distance 
        FROM `MyTable` 
        HAVING distance > ".$distance.";
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3