我有一个数据库,其中包含商店列表以及每个商店的纬度和经度。因此,根据我输入的当前(纬度、经度)位置,我想获取某个半径(如 1 公里、5 公里等)内的项目列表?
算法应该是什么?我需要算法本身的 PHP 代码。
您只需要使用以下查询。
例如,您输入纬度和经度 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;
如果您想要以公里为单位的搜索距离,请在上面的查询中将 3959 替换为 6371。
您也可以这样做:
选择所有纬度和经度
然后计算每条记录的距离。
上述过程可以通过多重重定向来完成。
为了优化查询,您可以使用存储过程。
And this http://www.arubin.org/files/geo_search.pdf也可以帮助你。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)