基于现有数据库的附近位置

时间:2016-07-04 06:08:14

标签: php android mysql

我想从数据库中找到附近注册的位置,我可以从GPS android获取用户的当前位置。如果附近注册的位置是从数据库派生出来的,那将是很好的,受到半径3公里的限制。

我可以将纬度和经度值存储在数据库中,但找到neaby位置的最佳方法是什么? 检索并检查android或直接在php中检查它,然后将其重新启动到Android设备。?

例如:用户注册他的位置,它将存储在数据库中,稍后当另一个用户尝试查找附近的注册用户时,应该重新审核附近的最大用户。

1 个答案:

答案 0 :(得分:1)

好吧,你可以使用sql查询来做到这一点。

SELECT id, ( 3959 * acos ( cos ( radians(78.3232) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(65.3234) ) + sin ( radians(78.3232) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 30 ORDER BY distance LIMIT 0 , 20;

它将找到距离(78.3232,65.3234)(纬度,经度)坐标(当前位置为度弧度)30英里范围内最近的20个位置。 lat,lng是纬度和经度,数据库表列名称,用于存储自定义位置(也以度弧度)

要按公里而非里程搜索,请将3959替换为6371.请参阅this question