Cesium中Camera的常用方法
08-Cesium中Camera的常用方法
camera是viewer.scene中的属性,用来控制当前的可见域。viewer.camera 是快捷写法,访问的是 viewer.scene.camera,所以调用时这两种写法都行。介绍三种常用的view.carmera方法。
(1)setView
Camera根据视图位置直接定位。
const position = Cesium.Cartesian3.fromDegrees(118.923, 32.482, 1785000) //可以根据需求选择坐标与坐标类型
viewer.camera.setView({
destination: position, // 相机位置
orientation: {
heading: Cesium.Math.toRadians(0), // 水平旋转 -正北方向
pitch: Cesium.Math.toRadians(-90), // 上下旋转 --俯视朝向
roll: 0 // 视口翻滚角度
}
})
主要参数:
heading: 偏航角,默认方向为正北(0°),正角度为向东旋转,即左右摇头。
pitch: 俯仰角,默认角度为-90°,即朝向地面,0°为平视,正角度为仰视,负角度为俯视,即抬头低头。
roll: 翻转角,默认角度为0°,正角度向右旋转,负角度向左旋转,即左右歪头。
(2)flyHome
默认位置 Cesium.Camera.DEFAULT_VIEW_RECTANGLE(默认视角矩形框),视角由一个矩形组成。
Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(119.9, 30.7501282784158, 121.33, 31.9645982738191);
// 将相机飞到主视图,即默认矩形框区域。
let duration = 2;
viewer.camera.flyHome(duration)
在 Cesium.Rectangle.fromDegrees()中,传入的四个参数分别为最西边坐标点的经度,最南边左边点的纬度,最东边坐标点的经度,最南边坐标点的维度,是矩形框四个坐标点的集合。
duration表示飞行的持续时间,可以不传。默认值为Cesium根据需要行驶的距离来计算飞行持续时间。
(3)flyTo
将相机从当前位置飞行移动到新位置。
// 1. 飞到自上而下视图的位置(垂直视角)
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(118.923, 32.482, 15000.0)
});
// 2. 飞到自上而下视图的矩形(垂直视角)
viewer.camera.flyTo({
destination : Cesium.Rectangle.fromDegrees(119.9, 30.7501282784158, 121.33, 31.9645982738191)
});
// 3.使用航向、俯仰和滚转飞到一个方位.
viewer.camera.flyTo({
destination : Cesium.Cartesian3.fromDegrees(118.923, 32.482, 5000.0),
orientation : {
heading : Cesium.Math.toRadians(175.0),
pitch : Cesium.Math.toRadians(-35.0),
roll : 0.0
}
});
(4)lookAt
场景视角锁定,拖动视图主要以小球视角进行环绕查看。使用目标和偏移量设置相机位置和方向。
const center = Cesium.Cartesian3.fromDegrees(118.923, 32.482,) // 目标位置
const heading = Cesium.Math.toRadians(50)// 水平旋转 -正北方向
const pitch = Cesium.Math.toRadians(-90) // 上下旋转 --俯视朝向
const range = 2000 // 目标点高度
viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, range))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)