Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtenha resultados do mysql com base na latitude e longitude


Você pode calcular uma distância usando uma lei esférica dos cossenos :
SELECT DEGREES(ACOS(SIN(RADIANS(clients.latitude)) * SIN(RADIANS(schools.latitude)) + 
                    COS(RADIANS(clients.latitude)) * COS(RADIANS(schools.latitude)) 
                                                   * COS(RADIANS(clients.longitude 
                                                               – schools.longitude)))) 
       * 60 * 1.1515 * 1.609344 AS distance
FROM clients, schools HAVING distance < $radius

RADIANS(X) - graus para radianos
ACOS(X ) - o arco cosseno de X, ou seja, o valor cujo cosseno é X
GRAUS(X) - radianos em graus


60 - minutos em um grau
1,1515 - milhas em uma milha náutica
1,609344 - quilômetros em uma milha