To jest zapytanie MySQL, które zrobi dokładnie to, czego chcesz. Należy pamiętać, że takie rzeczy są ogólnie przybliżeniami, ponieważ ziemia nie jest idealnie kulista ani nie uwzględnia gór, wzgórz, dolin itp. Używamy tego kodu na AcademicHomes.com z PHP i MySQL zwraca rekordy w promieniu $ mil od $szerokości, $długości geograficznej.
$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");