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

PHP / MySQL - Encontre todos os itens em um raio de 500 metros a partir das coordenadas reais do GPS


Calcular a distância entre duas coordenadas não é tão difícil, dada a fórmula de Haversine.
SELECT 
  -- stuff here
  , ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance 
FROM 
  stuff
HAVING 
  distance < 500

Resposta referenciada

Mudanças necessárias da resposta original:

  1. A constante oferecida na resposta original fornecia os valores para milhas ou quilômetros. Eu mudei a constante aqui para trabalhar com medidores.

  2. As constantes foram alteradas para usar suas coordenadas. Você pode querer adaptar a consulta um pouco mais para criar esses parâmetros em vez de constantes.

  3. O having expressão mudou um pouco para refletir seu desejo de 500 metros. Novamente, isso pode ser algo que você deseja parametrizar.