关于cesium:Cesium中Camera的常用方法

44次阅读

共计 1731 个字符,预计需要花费 5 分钟才能阅读完成。

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

正文完
 0