获取当前视角
import * as Cesium from 'cesium'
/**
* 获取当前视角
* @param viewer 地图
* @returns 当前视角
*/
export function getView(viewer: Cesium.Viewer): any {
const camera = viewer.scene.camera
// 获取当前相机位置(笛卡尔坐标系)和目标位置(通常不需要目标位置来获取视角,这里只获取相机位置)
const positionCartographic = Cesium.Ellipsoid.WGS84.cartesianToCartographic(camera.position)
// 将经纬度从弧度转换为度
const longitude = Cesium.Math.toDegrees(positionCartographic.longitude)
const latitude = Cesium.Math.toDegrees(positionCartographic.latitude)
const height = positionCartographic.height // 海拔,单位:米
// 获取heading, pitch, roll
const heading = Cesium.Math.toDegrees(camera.heading)
const pitch = Cesium.Math.toDegrees(camera.pitch)
const roll = Cesium.Math.toDegrees(camera.roll)
// 返回包含所有必要信息的对象
return {
longitude: longitude, // 经度
latitude: latitude, // 纬度
height: height, // 海拔
heading: heading, // 航向
pitch: pitch, // 俯仰角
roll: roll // 横滚角(注意:在大多数地球浏览场景中,roll 可能不是关键信息)
}
}
设置当前视角
viewer.scene.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(
-122.3466869160661,
47.60583557321136,
149.96517250560598
),
orientation: {
heading: Cesium.Math.toRadians(10),
pitch: Cesium.Math.toRadians(-10)
}
})