Bạn có thể sử dụng cái được gọi là công thức 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";
Ở đâu $lat
và $lng
là tọa độ của điểm và vĩ độ / lng là các cột trong bảng của bạn. Ở trên sẽ liệt kê các vị trí trong phạm vi 5 nm. Thay thế 3959
bởi 6371
để đổi sang ki lô mét.
Liên kết này có thể hữu ích: https://developers.google.com/maps/articles/phpsqlsearch_v3
Chỉnh sửa:Tôi không thấy bạn đề cập đến Java. Ví dụ này bằng PHP nhưng truy vấn vẫn là thứ bạn cần.