【问题标题】:Need a radius around a latitude and longitude location需要一个纬度和经度位置周围的半径
【发布时间】:2014-07-16 05:02:30
【问题描述】:

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

例如:纬度: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 米的人的位置。我该如何计算?

【问题讨论】:

    标签: java android facebook facebook-fql


    【解决方案1】:

    一个纬度是111.13公里。

    一个经度是111.32km * cos(纬度)。

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

    将所有这些放在一起,您可以说两点之间的南北距离(以公里为单位)为(纬度差)* 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。

    【讨论】:

    • 好的,谢谢。所以我想做的就是从经度和纬度中加减 0.33,然后我得到该位置周围约 30 公里的半径?
    • 你知道我怎样才能得到一个圆形而不是一个正方形吗?
    • 别忘了cos(latitude) 位。这很重要,因为两极附近的经线比赤道附近的经线更近。嗯,是的,一个圆圈很容易处理。我会把它编辑成答案。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2011-02-12
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多