千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关C#如何实现二维地图的Extent转换TE观看位置算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在系统开发中,有时会碰到二三维联动的
千家信息网最后更新 2025年02月01日C#如何实现二维地图的Extent转换TE观看位置算法

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

0