# AnimationTool

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

Name | Type | Default | 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
`callBack` | function |  | optional 回调函数，返回当前所在点坐标
`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 加速度数组
`option.onPositionTag` | Boolean | `false` | optional 是否执行经过路径点返回回调函数的功能，默认为false不执行
`options.onPositionCallback` | Object |  | optional 当点经过设置的路径点时，返回路径点坐标和index索引号
`options.disFactor` | Number | `0.01` | optional 用于判断当前点是否在路径点所在位置附近的精度
`options.isSetModelPosture` | Boolean | `true` | optional 是否设置模型运动姿态，保持朝向与运动方向一致，默认为true，设置为false时，模型姿态不改变
`options.startTime` | Object |  | optional Date类型，用于设置漫游开始时间

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('完毕');
                        },
                        //绕点旋转时，每一帧的回调函数，暂停同时暂停返回结果
                        onPositionCallback: 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();

### Members

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

漫游类型

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

动画漫游的类型

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

偏移距离 （单位米）

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

附加高程

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

航向角 （单位弧度）

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

根据Z轴旋转

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

是否挂载动态可视域

#### isGetPositionNow : Boolean
MapGIS/Tools/AnimationTool.js 385

是否获取当前点

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

是否循环

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

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

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

是否显示路径

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

俯仰角 （单位弧度）

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

根据Y轴旋转

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

坐标点

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

距离 (单位米)

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

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

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

根据X轴旋转

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

扫描特效实例

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

是否显示提示信息

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

漫游速度

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

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

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

快进（设置倍数）

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

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

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

可视域实例

### Methods

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

开始

##### Returns:

True

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

结束