所以我得到了一个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米的人的位置。我该如何计算呢?
答案 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。