sql >> Database >  >> RDS >> Mysql

PHP / MySQL - Vind alle items in een straal van 500 meter vanaf de werkelijke gps-coördinaten

Het berekenen van de afstand tussen twee coördinaten is eigenlijk niet zo moeilijk gezien de haversine-formule.

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

Referentieantwoord

Noodzakelijke wijzigingen ten opzichte van het oorspronkelijke antwoord:

  1. De constante die in het oorspronkelijke antwoord werd aangeboden, leverde de waarden voor mijlen of kilometers. Ik heb de constante hier veranderd om met meters te werken.

  2. De constanten zijn gewijzigd om uw coördinaten te gebruiken. Misschien wil je de query iets verder aanpassen om die parameters te maken in plaats van constanten.

  3. De having uitdrukking veranderde een beetje om uw wens voor 500 meter weer te geven. Nogmaals, dit kan iets zijn dat u wilt parametriseren.




  1. voeg elk jaar verjaardagsgebeurtenissen toe aan de volledige kalender van jQuery

  2. MySQL DROP UNIEKE BEPERKING

  3. hoe verwijderde primaire sleutels in mysql opnieuw te gebruiken?

  4. MySQL-gegevens naar JSON via PHP