Gis 在铯地图上找到中心

Gis 在铯地图上找到中心,gis,cesium,Gis,Cesium,我需要知道铯原子图的当前中心是什么 我尝试使用viewer.camera.position但它总是给出相同的z值(x:16921255.101297915,y:5578093.302269477,z:12756274),我不确定x和y值。它们以米为单位吗 非常感谢 编辑:解决方案 在我得到的所有帮助下(谢谢!)我将以下内容组合在一起: getPosition(){ if (viewer.scene.mode == 3) { var windowPosition = new

我需要知道铯原子图的当前中心是什么

我尝试使用
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));
    }
};

此函数以度为单位提供经度/纬度坐标。

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

还要检查摄像机是否在看地图,而不是看天空

SCENE2D:

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

从文档:

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


其余病例为2.5D或COLUMBUS_VIEW

回答正确。对于相机未查看地图/地球仪的情况,在使用笛卡尔地图中的值之前,应先测试
(pickPosition==undefined)
。我使用的是2D地图,并使用建议的“getMapCenter()”函数,但我总是得到“pickPosition==undefined”。我不确定我能做些什么来得到正确的位置,我不认为相机没有在看地图。。。它在屏幕上。在简单的情况下,如果您不旋转相机并且总是向下看地图,那么您可以使用以下命令:
var camPos=viewer.camera.positionmagraphic;log(camPos.longitude*(180/Math.PI));log(camPos.latitude*(180/Math.PI))是,笛卡尔值以米为单位。X轴从地球中心向外指向纬度0、经度0、高度0。Z轴从中心向外指向北极。Y轴与其他两个轴构成右手坐标系。您必须使用
椭球体.CartesiantoMaptographic
(如下面的答案所示)来执行转换。
var camPos = viewer.camera.positionCartographic; 
console.log(camPos.longitude * (180/Math.PI)); 
console.log(camPos.latitude * (180/Math.PI));