Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要一个围绕经纬度位置的半径_Java_Android_Facebook_Facebook Fql - Fatal编程技术网

Java 需要一个围绕经纬度位置的半径

Java 需要一个围绕经纬度位置的半径,java,android,facebook,facebook-fql,Java,Android,Facebook,Facebook Fql,所以我得到了一个FQL查询,我得到了一个人的纬度和经度 经度:4.40288179999932000 现在这是一个位置,我需要在这些坐标周围50000米半径内的所有事件。所以我得到了我的FQl查询: WHERE uid1 = me() LIMIT 500 )) AND start_time>'" + startTime + "' AND start_time<'" + endTime + "' AND venue.latitude < "NEED" AND

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

经度:4.40288179999932000

现在这是一个位置,我需要在这些坐标周围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
其中uid1=me()LIMIT 500)和开始时间>“+startTime+”
以及开始时间“需要”和地点。经度<“需要”
和地点.经度>“需要”
按出席人数订购
限制25

在任何需要的地方,我都需要输入坐标,这样我就能得到50000米半径的人的位置。我怎么计算呢?

一个纬度是111.13公里

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

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

把所有这些加在一起,你可以说两点之间的南北距离(以千米为单位)是(纬度差)*111.13,东西距离是(经度差)*111.32*cos(纬度弧度)。为了确保距离小于50公里,可以使用毕达哥拉斯定理来获得条件

((difference in latitude) * 111.13)^2 + (difference in longitude * 111.32 * cos(latitude in radians))^2 < 2500
((纬度差)*111.13)^2+(经度差*111.32*cos(纬度弧度))^2<2500

我不知道FQL是否有三角函数。如果没有,则必须计算出FQL之外的余弦,然后相应地构建FQL。

好的,谢谢。所以我想做的是从经度和纬度中加减0.33,然后得到这个位置周围大约30公里的半径?你知道如何得到一个圆而不是一个正方形吗?别忘了
cos(纬度)
位。这有点重要,因为经线在两极附近比赤道附近靠得更近。嗯,是的,圆圈很容易处理。我会把它编辑成答案。