通过距离和方位从已知位置查找点坐标的地理算法
我想使用 Google 地图静态 API 来显示带有指示边界的路径叠加层的地图。
AFAICT 静态 API 不支持多边形,因此我打算通过使用路径绘制边界来规避此问题。
为此,我需要确定在其之间绘制直线(路径)的点; 所以我想要一种算法,可以返回给定方位和距已知点距离的地理位置(即 WGS84 坐标)。
谁能指出我这样的算法。 最好是C#,但是其他语言也可以接受吗?
I'd like to use Google maps static API to display a map with a path overlay indicating a boundary.
AFAICT the static API doesn't support polygons, so I intend to circumvent this by drawing the boundary using paths.
To do this I need to determine the points to draw the straight lines (paths) between; so I'd like an algorithm that returns the geographic location (i.e. WGS84 coordinates) a given bearing and distance from a known point.
Can anyone point me to such an algorithm. Preferably in C#, but other languages are acceptable?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我在 C# 中实现并测试了它,使用度数而不是弧度作为输入/输出:
I implemented and tested it in C#, using Degrees as input/output instead of radians:
您可以在 KML 文件上绘制多边形,然后在 Google 地图上显示 KML。
这是 Google 地图上的 KML(来自 Google KML 示例)查看“Google Campus” - 内容中的“多边形”部分。
You can draw polygon on a KML file, and then show the KML on Google maps.
Here's KML on Google maps (From Google KML Samples) check the "Google Campus - Polygons" section in the content.
在(我认为)我所知道的每种语言中,弧度。 请注意,我认为您的示例代码为您提供了基于球体的坐标,而不是基于 WGS84 的坐标。 下面是用于在坐标系之间进行转换的 Java 代码。
In (I think) every language I know, radians. Note that I think your example code is giving you co-ordinates based on a sphere, not on WGS84. Here's Java code for converting between co-ordinate systems.
看看 Gavaghan Geodesy C#图书馆,它应该是你要找的。 而且它是免费的。
Take a look at Gavaghan Geodesy C# library, it should be what you're looking for. And it's free.
找到这个(这里:http://williams.best.vwh.net/avform.htm #LL):
点 {lat,lon} 是 tc 径向上距点 1 的距离 d,如果:
径向的单位是弧度还是度数?
编辑:
弧度 = 度 * PI / 180
Found this (here: http://williams.best.vwh.net/avform.htm#LL):
A point {lat,lon} is a distance d out on the tc radial from point 1 if:
Will the radial be in radians or degrees?
Edit:
radians = degrees * PI / 180