java - 如何在给定的经纬度中添加 x km 距离

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

我用小数点得到了经纬度的点。该点以圆为中心,圆的半径为x公里。如何找到圆圈内的所有经纬度?

最佳答案

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

你得到一个点 (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) 的距离,并检查距离是否 <= 到半径 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,371 公里)(d 是距离); 请注意,角度必须以弧度为单位才能传递给三角函数!

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

关于java - 如何在给定的经纬度中添加 x km 距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8222698/

相关文章:

java - 什么会导致崩溃时不创建 hs_err_pid 文件?

java - PowerMockito verifyTimes 始终传递私有(private)方法

javascript - 标记管理器不会显示标记

java - 根据纬度和经度将位置映射到最近的位置

ios - MKMapView - 将 long/lat 转换为 View x/y

android - 在android中的 Activity 之间传递字符串

java - ConcurrenthashMap 和线程安全

java - 如何从字符串参数设置ZK中的图像内容

javascript - 在显示另一条之前清除(删除)动态创建的折线时遇到问题

javascript - 从可拖动标记前往新街道和城镇