查找my gps附近的所有地点

时间:2011-03-01 09:36:07

标签: php iphone gps

实际上我的服务器数据库中有数百万人的记录,我想获取那些靠近我5英里的人的数据(我的意思是半径为5英里的圆圈)...

我通过网络服务将这些数据发送到iPhone ......

请告诉我如何在我的PHP服务器上执行此操作....

2 个答案:

答案 0 :(得分:7)

可能这可以帮到你

例如,您可以输入纬度和经度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为单位的搜索距离。然后在上面的查询中用6371替换3959。

Get nearest places on Google Maps, using MySQL spatial data

答案 1 :(得分:2)

您的服务器数据库中有数百万人记录(我希望您遵守数据保护法),那么您需要减少计算所有这些距离的工作量;否则你需要为这些数百万条记录中的每一条记录进行计算。

使用PHP计算“边界框”,可用于从数百万人的记录中选择可能候选人的子集,然后仅计算该人员记录子集的距离。请参阅可移动类型网站上的this article,例如描述如何执行此操作的PHP代码,以及该方法实际工作方式的绝佳描述。