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