小编典典

使用MySQL空间数据获取Google Maps上的最近地点

php

我有一个数据库,其中包含每个商店的经度和纬度。因此,根据我输入的当前(纬度,经度)位置,我想从半径1公里,5公里等范围内的物品中获取物品清单?

算法应该是什么?我需要用于算法本身的PHP代码。


阅读 331

收藏
2020-05-29

共1个答案

小编典典

您只需要使用以下查询。

例如,您输入的经度和纬度分别为37和-122(以度为单位)。您想搜索距当前给定纬度和经度25英里以内的用户。

SELECT item1, item2, 
    ( 3959 * acos( cos( radians(37) ) 
                   * cos( radians( lat ) ) 
                   * cos( radians( lng ) 
                       - radians(-122) ) 
                   + sin( radians(37) ) 
                   * sin( radians( lat ) ) 
                 )
   ) AS distance 
FROM geocodeTable 
HAVING distance < 25 
ORDER BY distance LIMIT 0 , 20;

如果要以kms为单位搜索距离,则在上面的查询中将3959替换为6371。

您也可以这样做:

  1. 选择所有经度和纬度

  2. 然后计算每个记录的距离。

  3. 可以使用多个重定向来完成上述过程。

为了优化查询,您可以使用存储过程。

也可以帮助你。

2020-05-29