温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C#如何实现二维地图的Extent转换TE观看位置算法

发布时间:2022-01-13 17:29:45 来源:亿速云 阅读:116 作者:小新 栏目:大数据

这篇文章将为大家详细讲解有关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观看位置算法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI