我需要知道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)
此函数以度为单位给出经度/纬度坐标.
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
| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |