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";
Où $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.