Puoi usare quella che viene chiamata la formula 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";
Dove $lat
e $lng
sono le coordinate del tuo punto e lat/lng sono le colonne della tabella. Quanto sopra elencherà le posizioni entro un intervallo di 5 nm. Sostituisci 3959
per 6371
per cambiare in chilometri.
Questo link potrebbe essere utile:https://developers.google.com/maps/articles/phpsqlsearch_v3
Modifica:non ho visto che hai menzionato Java. Questo esempio è in PHP ma la query è ancora ciò di cui hai bisogno.