在铯地图中获取中心

Get center in Cesium Map

我想知道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));
    }
};

此函数给出 longitude/latitude 度数坐标。

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));
}

基于this thread.

同时尝试检查相机是否在看地图,而不是天空。

SCENE2D:

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

来自文档:

2D mode. The map is viewed top-down with an orthographic projection

var camPos = viewer.camera.positionCartographic; 
console.log(camPos.longitude * (180/Math.PI)); 
console.log(camPos.latitude * (180/Math.PI));

剩下的情况是2.5D 或COLUMBUS_VIEW