Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL wählt Koordinaten innerhalb des Bereichs aus

Sie können die sogenannte Haversine-Formel verwenden .

$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";

Wobei $lat und $lng sind die Koordinaten Ihres Punktes und lat/lng sind Ihre Tabellenspalten. Das Obige listet die Standorte innerhalb eines 5-sm-Bereichs auf. Ersetzen Sie 3959 von 6371 um in Kilometer umzuwandeln.

Dieser Link könnte hilfreich sein:https://developers.google.com/maps/articles/phpsqlsearch_v3

Bearbeiten:Ich habe nicht gesehen, dass Sie Java erwähnt haben. Dieses Beispiel ist in PHP, aber die Abfrage ist immer noch das, was Sie brauchen.