Du kan använda det som kallas Haversine-formeln .
$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";
Där $lat
och $lng
är koordinaterna för din punkt, och lat/lng är dina tabellkolumner. Ovanstående listar platserna inom ett intervall på 5 nm. Ersätt 3959
av 6371
för att ändra till kilometer.
Den här länken kan vara användbar:https://developers.google.com/maps/articles/phpsqlsearch_v3
Edit:Jag såg inte att du nämnde Java. Det här exemplet är i PHP men frågan är fortfarande vad du behöver.