Cesium获取当前视角

创建日期:2025-01-24
更新日期:2025-01-24

获取当前视角

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