在询问具体的代码示例之前,我只想问一下是否可以进行类似此伪代码的查询:

从表格中选择经度/经度=-在某个经度/经度点的x英里内-

那可行吗?还是我必须跳过一些箍?
可以推荐的任何好的方法都很棒!

最佳答案

您应该搜索Haversine公式,但是一个好的开始可能是:

  • Creating a Store Locator with PHP, MySQL & Google Maps-请参见“使用MySQL查找位置”一节
  • Geo/Spatial Search with MySQL

  • 从第一个网址引用:

    这是一条SQL语句,它将找到距离37,-122坐标25英里范围内的最近20个位置。它根据该行的纬度/经度和目标纬度/经度计算距离,然后仅查询距离值小于25的行,按距离对整个查询进行排序,并将其限制为20个结果。要按公里而不是英里进行搜索,请将3959替换为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;
    

    关于mysql - 在MySQL中查询经度和纬度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4687312/

    10-14 00:33