偶尔一个Cesium功能(二):相机飞行

2,033 阅读2分钟

当前使用的 Cesium 版本为 v1.80.0

viewer.camera.flyTo({
    destination : Cesium.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0), 
    orientation : {
        heading : Cesium.Math.toRadians(175.0), // 方向
        pitch : Cesium.Math.toRadians(-35.0), // 倾斜角度
        roll : 0.0 // 旋转角度
    },
    duration :5,
    complete: function() {
        ...
    },
    cancle: function() {
        ...
    },
    maximunHeight: 5000,
    flyOverLongitude: 100
});

viewercamera.flyTo一般会传入一个对象,对象里面描述了指定的属性,常用的如下:

destination属性,必传属性,类型为Cartesian3,通常用来传入一个Cartesian3空间坐标,不过介于一般我们从后台拿到的数据都是经纬度,所以不能直接传入经纬度,得通过Cesium自带的转换方法转换成Cesium认识的坐标,具体方法为: Cesium.Cartesian3.fromDegrees(经度, 纬度, 高度),三个参数的类型皆为Number,其中高度的单位为米。

orientation属性,可选属性,类型为Objectorientation属性是一个包含方向和向上属性或航向,俯仰和横滚属性的对象。默认情况下,方向将指向在3D中朝向帧中心,在哥伦布视图中沿负z方向。向上方向将指向3D局部正北哥伦布视图中的y方向。在无限滚动模式下,二维不使用方向。一般我们会用到三个参数:headingpitchroll

这个三个属性就是Cesium提供的用来控制摄像头方向的属性,roll是围绕X轴旋转,pitch 是围绕Y轴旋转, heading是围绕Z轴旋转,也就是下图中的Yaw。它们三者的单位皆为度,支持单浮点。

image.png

duration属性,可选属性,用来设置相机飞行所用的时间,默认会自动根据距离来计算,类型为Number,单位为秒。

complete属性,可选属性,用于存放一个函数,并将会在相机飞行结束时进行调用。

cancle属性,可选属性,用于存放一个函数,如果取消飞行会调用该函数。

maximunHeight属性,可选属性,设置相机最大飞行高度,默认无上限。 flyOverLongitude属性,可选属性,如果存在该属性,那么相机在飞行的时候会始终进过该经度。