Avant de demander des exemples de code spécifiques, je voulais juste demander s'il est possible de faire une requête quelque chose comme ce pseudo code:
sélectionnez les éléments du tableau où Lat/Lon = -Within x miles d'un certain point/lon
Est-ce que c'est faisable? Ou dois-je sauter à travers des cerceaux? Toutes les bonnes approches pouvant être recommandées seraient super!
Vous devriez rechercher la formule Haversine, mais un bon départ pourrait être:
Citant de la première URL:
Voici l'instruction SQL qui trouvera les 20 emplacements les plus proches situés dans un rayon de 25 milles à la coordonnée 37, -122. Il calcule la distance en fonction de la latitude/longitude de cette ligne et de la latitude/longitude cible, puis ne demande que des lignes uniquement lorsque la valeur de distance est inférieure à 25, commande toute la requête de distance et la limite à atteindre 20 résultats. Pour rechercher par kilomètres au lieu de miles, remplacez 3959 avec 6371.
SELECT
id,
( 3959
* acos( cos( radians(37) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-122) )
+ sin( radians(37) )
* sin( radians( lat ) )
)
)
AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;