MySQL(表)

id | url |    lat    |    lng
----------------------------------
1  |  x  | 44.339565 | -101.337891
----------------------------------
2  |  y  | 44.150681 | -101.074219
----------------------------------
3  |  z  | 43.897892 | -100.634766

我现在要做的是根据与(43.834527,-99.140625)的接近​​程度来排序列表。
$a = mysql_query("SELECT * FROM table ORDER BY proximity DESC");
while($b = mysql_fetch_assoc($a))
{
echo $b['url'].'<br />';
}

最佳答案

您可能有兴趣查看以下演示文稿:

  • Geo/Spatial Search with MySQL 1由Alexander Rubin

  • 作者介绍了如何在MySQL中使用Haversine Formula来按接近度排序并将搜索范围限制在定义的范围内。他还描述了如何使用纬度和经度列上的传统索引来避免对此类查询进行全表扫描。

    1 PDF Version

    10-08 08:00
    查看更多