Đây là một truy vấn MySQL sẽ làm chính xác những gì bạn muốn. Xin lưu ý rằng những thứ như thế này nói chung là gần đúng, vì trái đất không phải là hình cầu hoàn hảo và điều này không tính đến núi, đồi, thung lũng, v.v. Chúng tôi sử dụng mã này trên AcademicHomes.com với PHP và MySQL, nó trả về các bản ghi trong bán kính $ dặm từ $ vĩ độ, $ kinh độ.
$res = mysql_query("SELECT
*
FROM
your_table
WHERE
(
(69.1 * (latitude - " . $latitude . ")) *
(69.1 * (latitude - " . $latitude . "))
) + (
(69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3)) *
(69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3))
) < " . pow($radius, 2) . "
ORDER BY
(
(69.1 * (latitude - " . $latitude . ")) *
(69.1 * (latitude - " . $latitude . "))
) + (
(69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3)) *
(69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3))
) ASC");