获取Cesium地图中心

Pri*_*tos 7 gis cesium

我需要知道Cesium Map的当前中心是什么.

我尝试使用,viewer.camera.position但它总是给出相同的z值(x:16921255.101297915,y:5578093.302269477,z:12756274),我不确定x和y值.它们是米吗?

非常感谢!

编辑:解决方案

在我得到的所有帮助下(谢谢!)我把它放在一起:

getPosition(){
    if (viewer.scene.mode == 3) {
        var windowPosition = new Cesium.Cartesian2(viewer.container.clientWidth / 2, viewer.container.clientHeight / 2);
        var pickRay = viewer.scene.camera.getPickRay(windowPosition);
        var pickPosition = viewer.scene.globe.pick(pickRay, viewer.scene);
        var pickPositionCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition);
        console.log(pickPositionCartographic.longitude * (180 / Math.PI));
        console.log(pickPositionCartographic.latitude * (180 / Math.PI));
    } else if (viewer.scene.mode == 2) {
        var camPos = viewer.camera.positionCartographic;
        console.log(camPos.longitude * (180 / Math.PI));
        console.log(camPos.latitude * (180 / Math.PI));
    }
};
Run Code Online (Sandbox Code Playgroud)

此函数以度为单位给出经度/纬度坐标.

Tom*_*uic 5

viewer.camera.position为您提供相机位于X,Y,Z坐标系中相对于地球中心的位置(以米为单位)。

根据您使用的场景模式的不同而不同:

SCENE3D:

为了查看相机在看什么,您需要获取相机的拾取光线和贴图的相交点。

 function getMapCenter() {            
        var windowPosition = new Cesium.Cartesian2(viewer.container.clientWidth / 2, viewer.container.clientHeight / 2);
        var pickRay = viewer.scene.camera.getPickRay(windowPosition);
        var pickPosition = viewer.scene.globe.pick(pickRay, viewer.scene);
        var pickPositionCartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(pickPosition);
        console.log(pickPositionCartographic.longitude * (180/Math.PI));
        console.log(pickPositionCartographic.latitude * (180/Math.PI));
}
Run Code Online (Sandbox Code Playgroud)

基于此线程

另外,请尝试检查相机是否在看地图,而不是在看天空。

场景2D:

这是一个简单的2D视图,相机直接指向下方。

从文档:

2D模式。使用正交投影从上至下查看地图

var camPos = viewer.camera.positionCartographic; 
console.log(camPos.longitude * (180/Math.PI)); 
console.log(camPos.latitude * (180/Math.PI));
Run Code Online (Sandbox Code Playgroud)

剩余大小写为2.5D或COLUMBUS_VIEW