我有一个数据库,其中包含每个商店的经度和纬度。因此,根据我输入的当前(纬度,经度)位置,我想从半径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;
如果要以kms为单位搜索距离,则在上面的查询中将3959替换为6371。
您也可以这样做:
选择所有经度和纬度
然后计算每个记录的距离。
可以使用多个重定向来完成上述过程。
为了优化查询,您可以使用存储过程。
而这也可以帮助你。