Você pode usar o que é chamado de fórmula 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";
Onde
$lat
e $lng
são as coordenadas do seu ponto e lat/lng são as colunas da sua tabela. O acima listará os locais dentro de um intervalo de 5 nm. Substituir 3959
por 6371
para mudar para quilômetros. Este link pode ser útil:https://developers.google.com/maps/articles/phpsqlsearch_v3
Edit:não vi que você mencionou Java. Este exemplo está em PHP, mas a consulta ainda é o que você precisa.