# AnimationTool

#### new Cesium.AnimationTool(viewer, options)
MapGIS/Tools/AnimationTool.js 198

Name | Type | Description
--- | --- | ---
`viewer` | Object | 场景视图

`options`

Object

附加选项

Name | Type | Default | Description
--- | --- | --- | ---
`toolType` | Number | `routes` | optional 工具类型，routes：动画漫游，point：绕点旋转
`heading` | Number | `0` | optional 航向角（相机视角），绕Z轴旋转。弧度值。绕视点旋转时，这个值是自增的，因此只有初始化时生效，不可实时修改
`pitch` | Number | `0` | optional 俯仰角（相机视角），绕Y轴旋转。弧度值。绕视点旋转时，这个值可实时修改。
`distance` | Number | `0` | optional 绕点旋转时，相机定位点的平移距离（沿着相机视角的相反方向），米。绕视点旋转时，这个值可实时修改。不能为空或者是0。
`duration` | Number | `8` | optional 绕点旋转时，动画持续时间
`moveToStop` | Number | `true` | optional 绕点旋转时，移动鼠标，停止旋转。true激活该特性，false，不激活该特性。
`animationType` | Number | `2` | optional 0：一般场景，不操作相机；1：跟随；2：锁定第一视角；3：上帝视角
`isLoop` | Boolean | `false` | optional 是否循环
`showPath` | Boolean | `false` | optional 是否显示路径 (默认不显示路径)
`positions` | Array |  | optional 漫游路径点 初始化可以不设置 但一定要在开始前设置好
`speed` | Number | `1` | optional 漫游速度或者绕点旋转速度，默认1m/s(1米/秒)或1度/秒 特别提醒（漫游场景范围很大的时候，这个一定要设置大，比如飞机可能就是真实的几千米每秒 如果不按真实设置，会导致内部时间点插值过密，造成卡顿）。
`speedupFactor` | Number | `1` | optional 加速因子(加速倍数) 默认为1
`exHeight` | Number | `2` | optional 附加高程
`showInfo` | Boolean | `false` | optional 是否显示提示信息
`modelUrl` | Object |  | optional 模型路径 默认为空不显示
`model` | Object |  | optional 动画漫游中的模型对象参数，详见`ModelGraphics`
`complete` | function |  | 完成回调 完成后的回调函数
`interpolationAlgorithm` | Object | `LagrangePolynomialApproximation` | optional 插值算法 默认拉格朗日 还有线性插值 Cesium.LinearApproximation(埃尔米特插值插值)Cesium.HermitePolynomialApproximation
`isGetPositionNow` | Boolean | `false` | optional 是否获取当前点坐标，默认为false，为true时，需配合返回当前点坐标的回调函数一起使用 (废弃)
`isProcessCorner` | Boolean | `false` | optional 是否需要将较大转弯点处理为圆弧
`maxAngle` | Number | `150.0` | optional 设置判断为转弯点的角度的最大值，不超过150的转角会被执行插值，处理为圆弧
`curveStep` | Number | `0.05` | optional 转弯处往圆弧曲线上插值点的步长，点个数=1/curveStep
`headingTargetPosition` | Number | `0.0` | optional 动态可视域目标点绕Z轴旋转，角度制
`pitchTargetPosition` | Number | `0.0` | optional 动态可视域目标点绕Y轴旋转，角度制
`rollTargetPosition` | Number | `0.0` | optional 动态可视域目标点绕X轴旋转，角度制
`rangeTargetPosition` | Number | `1.0` | optional 视点与目标点距离按照倍数增加
`isAddScanEffect` | Boolean | `false` | optional 是否挂载动态扫描特效
`scanEffect` | Object |  | optional 扫描特效实例，可以是动态圆，也可以是雷达扫描
`isGetRealHeight` | Boolean |  | optional 是否获取路径点的真实高程
`speedArray` | Array |  | optional 速度不同时，各个路径点的对应速度
`timeArray` | Array |  | optional 路径点与时间相对应
`accelerationArray` | Array |  | optional 加速度数组
`onPositionTag` | Boolean | `false` | optional 是否执行回调函数的功能，默认为false不执行
`callback` | function |  | optional 回调函数，返回的是对应的动画信息
`disFactor` | Number | `0.01` | optional 用于判断当前点是否在路径点所在位置附近的精度 (废弃)
`isSetModelPosture` | Boolean | `true` | optional 是否设置模型运动姿态，保持朝向与运动方向一致，默认为true，设置为false时，模型姿态不改变
`startTime` | Object |  | optional Date类型，用于设置漫游开始时间
`followSwitchMouseEvent` | Boolean | `false` | optional 布尔类型，默认为false，切换跟随视角下的鼠标点击事件，当animationType=1（跟随视角）为ture，切换鼠标右键为旋转事件
`startPositionIndex` | Number |  | optional Number类型，默认是0，是开始路径漫游跳转点的上一个路径点的索引，和offestStartPositionDistance一起用于判断漫游的具体跳转点位
`offsetStartPositionDistance` | Number |  | optional Number类型，默认是0，是距离startPositionIndex索引点的距离，单位是meter
`modelHeading` | Number | `0` | optional Number类型,默认是0，模型的方位角
`modelPitch` | Number | `0` | optional Number类型,默认是0，模型的俯仰角
`modelRoll` | Number | `0` | optional Number类型,默认是0，模型的倾斜角

Author:
  - 韩彦生 & zlf & 夏琨

##### Example:

    //绕点旋转
     var options = {
                        //类型指定为point
                        toolType: 'point',
                        //绕Z轴旋转角度，弧度值，初始化时有效。
                        heading: 0,
                        //绕Y轴旋转，弧度值，可通过纬度值转化，可实时更改。
                        pitch: 0,
                        //持续时间，秒。注意duration属性只有在isLoop为false时生效
                        duration: 20,
                        //旋转速度，度/秒。注意speed属性只有在isLoop为true时生效
                        speed: 10,
                        //是否循环动画，true：一直循环，false：到结束时间就停止动画
                        isLoop: true,
                        //旋转中心点，设置为球心
                        positions: new Cesium.Cartesian3(0, 0, 0),
                        //绕点旋转时，相机定位点的平移距离（沿着相机视角的相反方向）
                        distance: 41000000,
                        //绕点旋转动画完成事件
                        complete: function () {
                            alert('完毕');
                        },
                        //绕点旋转时，每一帧的回调函数，暂停同时暂停返回结果
                        callback: function (result) {
                            console.log('heading:' + result.heading + '，pitch：' + result.pitch);
                        },
                    }
     // 示例一：绕球心旋转
     options.positions = new Cesium.Cartesian3(0, 0, 0);
     var rotatePointTool = new Cesium.AnimationTool(viewer, options);
     // 示例二：绕某一点旋转
     options.positions = Cesium.Cartesian3.fromDegrees(108.96044700955785, 34.21796237686321, 60.99772929683282);
     var rotatePointTool = new Cesium.AnimationTool(viewer, options);
     // 示例三：持续旋转，不停止
     options.isLoop = true;
     // 请设置速度，否则就是默认值1度/秒
     options.speed = 10;
     var rotatePointTool = new Cesium.AnimationTool(viewer, options);
     //开始
     rotatePointTool.start();
     //暂停
     rotatePointTool.pause();
     //结束
     rotatePointTool.stop();
    //动画漫游
             var options = {
                //类型指定为routes
                toolType: 'routes',
                //航向角（相机视角），绕Z轴旋转,在第一人称视角，上帝视角下支持设置
                heading: 0,
                //俯仰角（相机视角），绕Y轴旋转。在第一人称视角支持设置
                pitch: 0,
                //距离：单位是米，在第一人称视角，上帝视角下支持设置
                range:100000,
                //漫游路径点，初始化可以不设置 但一定要在开始前设置好
                positions:[],
                // 视角类型 0：一般场景，不操作相机；1：跟随；2：锁定第一视角；3：上帝视角
                animationType:1,
                //以下两个参数为二次开发需求，将动画信息通过回调函数传回
                onPositionTag: true,
                callback: function (result) {
                            console.log('到达站点' + result.index + '，站点坐标：' + result.position);
                            //需要在模型运动到点索引为1，和点索引为5的分段改变姿态
                            if (result.routePointIndex===1||result.routePointIndex===5 ) {
                                 animation.modelHeading = 45;
                                 animation.modelPitch = 45;
                                 animation.modelRoll = 45;
                             } else {
                                 //其他分段还原姿态默认值
                                 animation.modelHeading = 0;
                                 animation.modelPitch = 0;
                                 animation.modelRoll = 0;
                             }
                        },
                //是否设置模型运动姿态，保持朝向与运动方向一致，默认为true，设置为false时，模型姿态不改变
                //isSetModelPosture:true,
                //是否循环动画，true：一直循环，false：到结束时间就停止动画
                isLoop: false,
                //加速因子
                speedupFactor: 5,
                //模型路径 默认为空不显示
                modelUrl: '../../SampleData/models/CesiumMan/Cesium_Man.glb',
                model: {
                    //放大比例
                    scale: 10000,
                    //固定大小设为0
                    minimumPixelSize : 0
                },
                //开始路径漫游跳转点的上一个路径点的索引
                startPositionIndex:0,
                //距离索引点的距离，单位是meter
                offsetStartPositionDistance:0,
                //是否需要将较大转弯点处理为圆弧
                //isProcessCorner: false,

                //设置判断为转弯点的角度的最大值，不超过150的转角会被执行插值，处理为圆弧
                //maxAngle: 150.0,
                //转弯处往圆弧曲线上插值点的步长，点个数=1/curveStep
                //curveStep: 0.01,
                complete: function () {
                    alert('完毕');
                }
            }
     // 示例：路径漫游
     options.positions = Cesium.Cartesian3.fromDegreesArray([
                    117.213063, 31.812956, 117.213162, 31.812389, 117.212929, 31.812056, 117.213275, 31.811582,
                    117.21348, 31.811513, 117.214141, 31.811682, 117.21497, 31.811691, 117.216318, 31.811454
                ]);
     var animation = new Cesium.AnimationTool(viewer, options);
    //开始
     animation.start();
     //暂停
     //animation.pause();
     //结束
     //animation.stop();

### Members

#### readonly animationModel : Number
MapGIS/Tools/AnimationTool.js 450

动画模型

#### animationType : Number
MapGIS/Tools/AnimationTool.js 409

动画漫游的类型

#### distance : Number
MapGIS/Tools/AnimationTool.js 512

偏移距离 （单位米）

#### exHeight : Number
MapGIS/Tools/AnimationTool.js 460

附加高程

#### heading : Number
MapGIS/Tools/AnimationTool.js 486

航向角 （单位弧度）

#### headingTargetPosition : Number
MapGIS/Tools/AnimationTool.js 608

根据Z轴旋转

#### isAddViewshedAnalysis : Boolean
MapGIS/Tools/AnimationTool.js 556

是否挂载动态可视域

#### isLoop : Boolean
MapGIS/Tools/AnimationTool.js 422

是否循环

#### isSetModelPosture : Boolean
MapGIS/Tools/AnimationTool.js 673

是否设置模型运动姿态，保持朝向与运动方向一致

#### isShowPath : Boolean
MapGIS/Tools/AnimationTool.js 436

是否显示路径

#### modelHeading : Number
MapGIS/Tools/AnimationTool.js 338

模型的方位角

#### modelPitch : Number
MapGIS/Tools/AnimationTool.js 352

模型的俯仰角

#### modelRoll : Number
MapGIS/Tools/AnimationTool.js 366

模型的倾斜角

#### offsetStartPositionDistance : Number
MapGIS/Tools/AnimationTool.js 727

距离startPositionIndex索引点在当前分段线上的距离,单位是meter

#### pause : Boolean
MapGIS/Tools/AnimationTool.js 686

控制动画的暂停

#### pitch : Number
MapGIS/Tools/AnimationTool.js 499

俯仰角 （单位弧度）

#### pitchTargetPosition : Number
MapGIS/Tools/AnimationTool.js 595

根据Y轴旋转

#### positions : Array
MapGIS/Tools/AnimationTool.js 285

坐标点

#### range : Number
MapGIS/Tools/AnimationTool.js 525

距离 (单位米)

#### rangeTargetPosition : Number
MapGIS/Tools/AnimationTool.js 621

可视域视点到目标点视距增加倍数

#### rollTargetPosition : Number
MapGIS/Tools/AnimationTool.js 582

根据X轴旋转

#### scanEffect : Object
MapGIS/Tools/AnimationTool.js 634

扫描特效实例

#### showInfo : Boolean
MapGIS/Tools/AnimationTool.js 473

是否显示提示信息

#### speed : Number
MapGIS/Tools/AnimationTool.js 380

漫游速度

#### speedArray : Array
MapGIS/Tools/AnimationTool.js 647

用于变速漫游中，设定各个点的速度

#### speedupFactor : Number
MapGIS/Tools/AnimationTool.js 395

快进（设置倍数）

#### startPositionIndex : Number
MapGIS/Tools/AnimationTool.js 713

用于记录开始路径漫游跳转点的上一个路径点的索引

#### timeArray : Array
MapGIS/Tools/AnimationTool.js 660

用于变速漫游中，设定各个点通过的时间数组，时间使用Date()对象

#### viewshedAnalysis : Object
MapGIS/Tools/AnimationTool.js 569

可视域实例

### Methods

#### start() → Boolean
MapGIS/Tools/AnimationTool.js 1301

开始

##### Returns:

True

#### stop()
MapGIS/Tools/AnimationTool.js 1795

结束