【发布时间】:2012-01-03 14:16:08
【问题描述】:
我用小数点得到了经纬度。该点以圆为圆心,圆的半径为 x 公里。如何找到圆圈中覆盖的所有经纬度?
【问题讨论】:
-
我有很多经纬度。我只需要确定哪个纬度,哪个经度属于那个圆圈区域。我必须把它们分开。
标签: java google-maps-api-3 latitude-longitude
我用小数点得到了经纬度。该点以圆为圆心,圆的半径为 x 公里。如何找到圆圈中覆盖的所有经纬度?
【问题讨论】:
标签: java google-maps-api-3 latitude-longitude
可能最简单的答案是使用毕达哥拉斯。
你得到一个点 (x,y),它是半径为 r 的圆的中心。
'我如何找到圆圈中覆盖的所有纬度和经度?'几乎是无限的。
相反,您更愿意检查中心点是否在圆的半径内(假设您想弄清楚点 (x,y) 的 k 公里范围内的位置)。
给定点 (x1,y1),你会做 sqrt((x1-x)^2 + (y1-y)^2) (毕达哥拉斯定理 a^2 = b^2 + c^2) 来找到从点 (x,y) 到点(x1,y1) 的距离,并检查距离是否
就实际距离而言,您可能需要使用Haversine 公式:
a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
c = 2.atan2(√a, √(1−a))
d = R.c
其中 R 是地球的半径(平均半径 = 6,371km)(d 是距离); 请注意,角度需要以弧度为单位才能传递给三角函数!
【讨论】: