首页 / 浏览问题 / 三维GIS / 问题详情
新版虚幻超图,UE坐标转经纬度坐标接口消失,应该用哪个函数转换呢
3EXP 2024年01月30日
在以前的虚幻超图版本中,我使用RealspaceView::GetSingleton()->GetSceneControl()->GetScene()->UEToCartesian(Pos)这个接口,来将UE坐标转换为经纬度坐标,但在最新的超图中,没有找到UEToCartesian函数了,请问应该怎么解决呢

1个回答

你好,

超图插件的UE坐标转经纬度坐标参考以下截图:

840EXP 2024年01月30日
但是我现在是这样写的,通过cameraState->SetUGCameraState(vector.X, vector.Y, vector.Z, 0, 0, 0);

 RealspaceView::GetSingleton()->GetSceneControl()->GetScene()->Fly(cameraState, 1000);让摄像机飞到指定经纬度位置,

然后获取摄像机坐标:FVector Location = UGameplayStatics::GetPlayerCameraManager(GetWorld(), 0)->GetRootComponent()->GetComponentLocation();

Vector3d vOrigin = Georeference::TransformUERelativeToOriginECEF(Pos);

Vector3d vLonLat = MathEngine::CartesianToSpherical(vLocal.X, vLocal.Y, vLocal.Z);

这样返回的摄像机高度与我设置的并不一致
您那边是想实现相机定位吗?我们有飞行定位的方法,可以参考下插件包里面的api来实现:void Fly(CameraState* pCameraState, Gameint milliseconds)
您好,可能是我描述的不太清楚,我首先使用RealspaceView::GetSingleton()->GetSceneControl()->GetScene()->LongitudeLatitudeToUE(tempPos);这个函数来将经纬度转换成UE的世界坐标,然后使用MathEngine::CartesianToSpherical(Pos.X, Pos.Y, Pos.Z);对UE的世界坐标进行转换,与最开始的经纬度相差很大,并不像以前的UEToCartesian(Pos)这个接口一样可以完美转换。目前还有一个问题就是我想在SuperMap_MainActor.cpp中使用RealspaceDLL.h中的_CartesianToSphericalD,在引用了命名空间和模块的情况下,仍然会报错无法解析的外部引用
...