如何在给定的lat中添加x km距离,long

时间:2011-11-22 06:08:10

标签: java google-maps-api-3 latitude-longitude

我使用小数点得到纬度和经度的点。该点以圆为中心,圆的半径为x km。如何找到圆圈中涵盖的所有纬度和经度?

1 个答案:

答案 0 :(得分:2)

可能最简单的答案是使用毕达哥拉斯。

你有一个点(x,y),它是半径为r的圆的中心。

'我怎样才能找到圈内的所有纬度和经度?'几乎是无限的。

相反,您宁愿检查中心点是否在圆的半径范围内(猜测您想要确定哪些位置在点(x,y)的k km范围内)。

给定点(x1,y1),你会做sqrt((x1-x)^ 2 +(y1-y)^ 2)(毕达哥拉斯定理a ^ 2 = b ^ 2 + c ^ 2)来找到从点(x,y)到点(x1,y1)的距离并检查距离是否<=到半径r。界限很容易计算(xmin = x-r,xmax = x + r等)。

就实际距离而言,您可能需要使用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是距离); 请注意,角度需要以弧度为单位才能传递给trig函数!

此处有更多信息http://www.movable-type.co.uk/scripts/latlong.html

相关问题