这篇文章将为大家详细讲解有关C#如何实现二维地图的Extent转换TE观看位置算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在系统开发中,有时会碰到二三维联动的功能开发,具体就是二维地图移动时,三维移动随着移动,三维地图移动,二维地图也变化。
二维地图的视角,是一个从上往下直立观看的方向,三维地图可以不断的变化的观看方向,所以,在联动的过程中,二维控制三维时,三维的视角只能保持一个直立向下的方向,才能和二维保持较好的一致。
二维地图在移动的过程中,可以获得地图的四至坐标,即XMax,XMin,YMax,YMin,根据此范围,可以在TE中计算出一个大致的范围,进行地图定位。
具体的代码实现如下(C#):
//XMax,XMin,YMax,YMin为4个坐标
double pcenterX = (XMax+XMin) / 2;
double pcenterY = (YMax +YMin) / 2;
//计算地图的横向距离
double pdistance = SGWorld.CoordServices.GetDistance(XMax, YMax, XMin,YMax);
//根据横向观看距离和TE的观看范围,计算垂直观看高度
double pviewHeight = pdistance / 2 / Math.Tan(Math.PI * SGWorld.Navigate.FieldOfView / 360);
//根据中心点和观看高度计算观看位置
var newPos = SGWorld.Creator.CreatePosition(pcenterX, pcenterY, pviewHeight, AltitudeTypeCode.ATC_TERRAIN_ABSOLUTE, 0, -89, 0, 0);
//定位到新位置
SGWorld61.Navigate.SetPosition(newPos);
关于“C#如何实现二维地图的Extent转换TE观看位置算法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。