sql >> Base de Datos >  >> RDS >> Mysql

PHP / MySQL:encuentre todos los elementos en un radio de 500 metros desde las coordenadas GPS reales

Calcular la distancia entre dos coordenadas en realidad no es tan difícil dada la fórmula 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

Respuesta referenciada

Cambios necesarios de la respuesta original:

  1. La constante ofrecida en la respuesta original suministró los valores de millas o kilómetros. Cambié la constante aquí para trabajar con metros.

  2. Las constantes han cambiado para usar sus coordenadas. Es posible que desee adaptar la consulta un poco más para hacer esos parámetros en lugar de constantes.

  3. El having expresión cambió un poco para reflejar su deseo de 500 metros. Nuevamente, esto podría ser algo que desee parametrizar.