Dies ist eine MySQL-Abfrage, die genau das tut, was Sie wollen. Denken Sie daran, dass solche Dinge im Allgemeinen Annäherungen sind, da die Erde weder perfekt kugelförmig ist noch Berge, Hügel, Täler usw. berücksichtigt. Wir verwenden diesen Code auf AcademicHomes.com mit PHP und MySQL gibt es Datensätze innerhalb von $radius Meilen von $latitude, $longitude zurück.
$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");