我有一个带有给定纬度/经度坐标的位置(来自谷歌地图)。
现在我想跨越一个给定距离(f.e. 150米)的矩形到所有4个天空方向(北,南,西,东),计算它们的坐标为纬度/经度。
我怎样才能在C#中做到这一点?
答案 0 :(得分:1)
请检查此PDF文件,我认为应该非常有帮助找到矩形跨度。 大多数人看到第11张幻灯片。
答案 1 :(得分:0)
这取决于它需要多精确。您可以使用球形模型。
void pointAtDistace(double lat1, double lon1, double brng, ref double lat2, ref double lon2)
{
lat2 = Math.Asin( Math.Sin(lat1)*Math.Cos(d/R) + Math.Cos(lat1)*Math.Sin(d/R)*Math.Cos(brng) );
lon2 = lon1 + Math.Atan2(Math.Sin(brng)*Math.Sin(d/R)*Math.Cos(lat1), Math.Cos(d/R)-Math.Sin(lat1)*Math.sin(lat2));
}
坐标需要以弧度为单位。但由于地球不是球形球,这里的库是为了这些目的使用更精确的库的方式:
http://www.gavaghan.org/blog/free-source-code/geodesy-library-vincentys-formula/