需要围绕纬度和经度位置的半径

时间:2013-11-20 01:08:59

标签: java android facebook facebook-fql

所以我得到了一个FQL查询,我得到了一个人的经纬度。

ex:纬度:51.219215899999990000和经度:4.402881799999932000

现在这是一个位置,我需要围绕这些坐标在半径50000米范围内的所有事件。所以我得到了我的FQl查询:

WHERE uid1 = me() LIMIT 500 ))  AND start_time>'" + startTime + "' 
    AND start_time<'" + endTime + "' AND venue.latitude < "NEED" 
    AND venue.latitude > "NEED" and venue.longitude < "NEED" 
    AND venue.longitude > "NEED" 
ORDER BY attending_count DESC 
LIMIT 25

在任何有需要的地方,我需要放入坐标,这样我就得到了一个半径为50000米的人的位置。我该如何计算呢?

1 个答案:

答案 0 :(得分:0)

一度纬度为111.13公里。

经度为111.32km * cos(纬度)。

在计算余弦时,不要忘记将纬度转换为弧度。另外,我假设你意识到使用你正在使用的FQL,你实际上得到一个正方形而不是圆形。

将所有这些放在一起,可以说两点之间的南北距离(以km为单位)是(纬度差)* 111.13,东西距离是(经度差)* 111.32 * cos(纬度(弧度)。为确保距离小于50km,您可以使用毕达哥拉斯定理得到条件

((difference in latitude) * 111.13)^2 + (difference in longitude * 111.32 * cos(latitude in radians))^2 < 2500

我不知道FQL是否具有三角函数。如果没有,你将不得不计算FQL之外的余弦,然后相应地构建FQL。