我想从数据库中找到附近注册的位置,我可以从GPS android获取用户的当前位置。如果附近注册的位置是从数据库派生出来的,那将是很好的,受到半径3公里的限制。
我可以将纬度和经度值存储在数据库中,但找到neaby位置的最佳方法是什么? 检索并检查android或直接在php中检查它,然后将其重新启动到Android设备。?
例如:用户注册他的位置,它将存储在数据库中,稍后当另一个用户尝试查找附近的注册用户时,应该重新审核附近的最大用户。
答案 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