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