gpt4 book ai didi

gis - 获取 Cesium Map 的中心

转载 作者:行者123 更新时间:2023-12-04 19:29:54 28 4
gpt4 key购买 nike

我需要知道铯 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));
}
};

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

最佳答案

viewer.camera.position 为您提供相机在 X、Y、Z 坐标中相对于地球中心的位置(以米为单位)。
根据您使用的场景模式不同,方法也不同:
SCENE3D:
为了看到相机在看什么,您需要获得相机拾取光线和 map 的交点。

 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 .
还要尝试检查相机是否正在查看 map ,而不是天空。
SCENE2D:
这是一个简单的 2D View ,相机直接指向下方。
从文档:

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

关于gis - 获取 Cesium Map 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33348761/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com