Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL seleciona coordenadas dentro do alcance


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.