Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL sélectionne les coordonnées dans la plage

Vous pouvez utiliser ce qu'on appelle la formule Haversine .

$sql = "SELECT *, ( 3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";

$lat et $lng sont les coordonnées de votre point, et lat/lng sont les colonnes de votre tableau. Ce qui précède répertorie les emplacements dans une plage de 5 nm. Remplacer 3959 par 6371 pour changer en kilomètres.

Ce lien pourrait être utile :https://developers.google.com/maps/articles/phpsqlsearch_v3

Edit :Je n'avais pas vu que vous aviez mentionné Java. Cet exemple est en PHP mais la requête est toujours ce dont vous avez besoin.