Mysql
 sql >> Database >  >> RDS >> Mysql

PHP / MySQL - Trova tutti gli elementi nel raggio di 500 metri dalle coordinate GPS effettive

Calcolare la distanza tra due coordinate non è poi così difficile data la formula 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

Risposta referenziata

Modifiche necessarie rispetto alla risposta originale:

  1. La costante offerta nella risposta originale forniva i valori per miglia o chilometri. Ho cambiato la costante qui per lavorare con i contatori.

  2. Le costanti sono cambiate per usare le tue coordinate. Potresti voler adattare ulteriormente la query per rendere quei parametri anziché costanti.

  3. Il having l'espressione è leggermente cambiata per riflettere la tua voglia di 500 metri. Anche in questo caso, potrebbe essere qualcosa che vuoi parametrizzare.