Bạn nên tìm kiếm công thức Haversine, nhưng một khởi đầu tốt có thể là:
- Tạo Công cụ định vị cửa hàng bằng PHP, MySQL và Google Maps - Xem Phần 'Tìm vị trí với MySQL'
- Tìm kiếm Địa lý / Không gian với MySQL
Trích dẫn từ url đầu tiên:
Đây là câu lệnh SQL sẽ tìm 20 vị trí gần nhất nằm trong bán kính 25 dặm tính đến tọa độ 37, -122. Nó tính toán khoảng cách dựa trên vĩ độ / kinh độ của hàng đó và vĩ độ / kinh độ mục tiêu, sau đó chỉ yêu cầu các hàng có giá trị khoảng cách nhỏ hơn 25, sắp xếp toàn bộ truy vấn theo khoảng cách và giới hạn ở 20 kết quả. Để tìm kiếm theo ki lô mét thay vì dặm, hãy thay thế 3959 bằng 6371.
SELECT
id,
( 3959
* acos( cos( radians(37) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-122) )
+ sin( radians(37) )
* sin( radians( lat ) )
)
)
AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;