#### # new AnimationTool(vieweropt, optionsopt)

场景漫游工具

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`viewer` | Cesium.Viewer | null | 场景视图，详见Cesium.Viewer
`options` | Object | {} | 额外初始化参数
`toolType` | String | 'routes' | 工具类型，routes：动画漫游，point：绕点旋转
`heading` | Number | 90 | 航向角（相机视角），绕Z轴旋转的弧度值。路径漫游时:跟随视角、第一视角、上帝视角下实时生效；绕视点旋转时:这个值是自增的，因此只有初始化时生效，不可实时修改
`pitch` | Number | 0 | 俯仰角（相机视角），绕Y轴旋转的弧度值。路径漫游时:跟随视角，第一视角实时生效；绕视点旋转时:这个值可实时修改。
`range` | Number | 0 | 相机距离，相机距离视点的距离，单位米。路径漫游时:跟随视角，上帝视角实时生效
`distance` | Number | 0 | 绕点旋转时，相机定位点的平移距离（沿着相机视角的相反方向），米。绕视点旋转时，这个值可实时修改。不能为空或者是0。
`duration` | Number | 8 | 绕点旋转时，动画持续时间
`moveToStop` | Number | true | 绕点旋转时，移动鼠标，停止旋转。true激活该特性，false，不激活该特性。
`animationType` | Number | 2 | 0：一般场景，不操作相机；1：跟随；2：锁定第一视角；3：上帝视角
`isLoop` | Boolean | false | 是否循环
`showPath` | Boolean | false | 是否显示路径 (默认不显示路径)
`positions` | Array |  | 漫游路径点 初始化可以不设置 但一定要在开始前设置好
`speed` | Number | 1 | 漫游速度或者绕点旋转速度，默认1m/s(1米/秒)或1度/秒 特别提醒（漫游场景范围很大的时候，这个一定要设置大，比如飞机可能就是真实的几千米每秒 如果不按真实设置，会导致内部时间点插值过密，造成卡顿）。
`speedupFactor` | Number | 1 | 加速因子(加速倍数) 默认为1
`exHeight` | Number | 2 | 附加高程
`showInfo` | Boolean | false | 是否显示提示信息
`modelUrl` | Object |  | 模型路径 默认为空不显示
`model` | Object |  | 动画漫游中的模型对象参数，详见`ModelGraphics`
`complete` | function |  | 完成回调 完成后的回调函数
`interpolationAlgorithm` | Object | LagrangePolynomialApproximation | 插值算法 默认拉格朗日 还有线性插值 Cesium.LinearApproximation(埃尔米特插值插值)Cesium.HermitePolynomialApproximation
`isProcessCorner` | Boolean | false | 是否需要将较大转弯点处理为圆弧
`maxAngle` | Number | 150.0 | 设置判断为转弯点的角度的最大值，不超过150的转角会被执行插值，处理为圆弧
`curveStep` | Number | 0.05 | 转弯处往圆弧曲线上插值点的步长，点个数=1/curveStep
`headingTargetPosition` | Number | 0.0 | 动态可视域目标点绕Z轴旋转，角度制
`pitchTargetPosition` | Number | 0.0 | 动态可视域目标点绕Y轴旋转，角度制
`rollTargetPosition` | Number | 0.0 | 动态可视域目标点绕X轴旋转，角度制
`rangeTargetPosition` | Number | 1.0 | 视点与目标点距离按照倍数增加
`isAddScanEffect` | Boolean | false | 是否挂载动态扫描特效
`scanEffect` | Object |  | 扫描特效实例，可以是动态圆，也可以是雷达扫描
`isGetRealHeight` | Boolean | false | 是否获取路径点的真实高程
`speedArray` | Array | [this._speed] | 速度不同时，各个路径点的对应速度
`timeArray` | Array | [] | 路径点与时间相对应
`accelerationArray` | Array | [0] | 加速度数组
`callback` | function |  | 运动过程中的回调函数
`callback.result` | Object |  | 回调结果：对应的运动动画信息
`callback.result.routePointIndex` | Number |  | 模型在路径点哪个分段，是当前分段的第一个点的索引
`callback.result.currenPositionStatus` | Number |  | 当前点状态:0代表点在线上，1代表点在拐点处
`callback.result.position` | Cesium.Cartesian3 |  | 实时位置，详见Cesium.Cartesian3
`callback.result.startTime` | Cesium.JulianDate |  | 运动开始时间，详见Cesium.JulianDate
`callback.result.currentTime` | Cesium.JulianDate |  | 当前时间，详见Cesium.JulianDate
`callback.result.stopTime` | Cesium.JulianDate |  | 运动结束时间，详见Cesium.JulianDate
`callback.result.remainDistance` | Number |  | 剩余运动距离
`callback.result.totalDistance` | Number |  | 运动总距离
`callback.result.speed` | Number |  | 运动速度
`isSetModelPosture` | Boolean | true | 是否设置模型运动姿态，保持朝向与运动方向一致，默认为true，设置为false时，模型姿态不改变
`startTime` | Object |  | Date类型，用于设置漫游开始时间
`startPositionIndex` | Number | 0 | Number类型，默认是0，是开始路径漫游跳转点的上一个路径点的索引，和offestStartPositionDistance一起用于判断漫游的具体跳转点位
`offsetStartPositionDistance` | Number | 0 | Number类型，默认是0，是距离startPositionIndex索引点的距离，单位是meter
`modelHeading` | Number | 0 | Number类型,默认是0，模型的方位角
`modelPitch` | Number | 0 | Number类型,默认是0，模型的俯仰角
`modelRoll` | Number | 0 | Number类型,默认是0，模型的倾斜角
`firstPersonCameraFocusOffset` | Object | {offsetX: 0,offsetY: 0,offsetZ: 0} | 第一人称视角下，相机焦点的偏移值。向前：offsetX；向左：offsetY；向上:offsetZ
`modelOffset` | Object | {offsetX: 0,offsetY: 0,offsetZ: 0} | 模型相对自身的平移值，单位为米。向前：offsetX；向左：offsetY；向上:offsetZ

请参考以下示例:
1、路径漫游
2、绕点旋转
3、飞行漫游
4、实时漫游
5、室内漫游
6、模型沿地形漫游

##### 示例

路径漫游

    // 参考示例：
    http://webclient.smaryun.com/#/modules/cesium/analyse/commonAnalyse/path-roaming

    // ES5引入方式
    const { AnimationTool } = zondy.cesium
    // ES6引入方式
    import { AnimationTool } from "@mapgis/webclient-cesium-plugin"

    // 1 构造漫游路径数组，单位为笛卡尔3
    const pathPositions = [...]

    // 2 定义漫游工具对象
    animationTool = new AnimationTool(viewer, {
      //类型指定为routes
      toolType: 'routes',
      // 漫游路径(笛卡尔3数组)
      positions: pathPositions,
      ...
    })

    // 3 开始漫游
    animationTool.start()

    // 4 暂停漫游
    animationTool.pause

    // 5 结束漫游
    animationTool.stop()

绕点旋转

    // 参考示例：
    http://webclient.smaryun.com/#/modules/cesium/sceneControl/camera/point-rotate

    // ES5引入方式
    const { AnimationTool } = zondy.cesium
    // ES6引入方式
    import { AnimationTool } from "@mapgis/webclient-cesium-plugin"

    // 1 定义漫游工具对象
    animationTool = new AnimationTool(viewer, {
      //类型指定为point
      toolType: 'point',
      //旋转中心点
      positions: new Cesium.Cartesian3(0, 0, 0),
      ...
    })

    // 2 开始旋转
    animationTool.start()

    // 3 暂停旋转
    animationTool.pause

    // 4 结束旋转
    animationTool.stop()

飞行漫游

    // 参考示例：
    http://webclient.smaryun.com/#/modules/cesium/analyse/commonAnalyse/fly-roaming

    // ES5引入方式
    const { AnimationTool } = zondy.cesium
    // ES6引入方式
    import { AnimationTool } from "@mapgis/webclient-cesium-plugin"

    // 1 构造漫游路径数组，单位为笛卡尔3
    const pathPositions = [...]

    // 2 定义漫游工具对象
    animationTool = new AnimationTool(viewer, {
      //类型指定为routes
      toolType: 'routes',
      // 漫游路径(笛卡尔3数组)
      positions: pathPositions,
      // 设置漫游的视角类型。0：正常，不移动相机；1：跟随；2：锁定第一视角；3：上帝视角
      animationType: 2,
      // 设置漫游模型
      modelUrl: 'http://webclient.smaryun.com:8200/3DData/Model/glb/TravelPlane.glb',
      //模型对象参数，详见ModelGraphics对象的文档
      model: {
        //放大比例
        scale: 30,
        //固定大小设为0
        minimumPixelSize: 0
      },
      ...
    })

    // 3 开始漫游
    animationTool.start()

    // 4 暂停漫游
    animationTool.pause

    // 5 结束漫游
    animationTool.stop()

实时漫游

    // 参考示例：
    http://webclient.smaryun.com/#/modules/cesium/analyse/commonAnalyse/real-time-roaming

    // ES5引入方式
    const { AnimationTool } = zondy.cesium
    // ES6引入方式
    import { AnimationTool } from "@mapgis/webclient-cesium-plugin"

    // 1 构造漫游路径数组，单位为笛卡尔3
    const pathPositions = [...]

    // 2 定义漫游工具对象
    animationTool = new AnimationTool(viewer, {
      //类型指定为routes
      toolType: 'routes',
      // 漫游路径(笛卡尔3数组)
      positions: pathPositions,
      // 设置漫游的视角类型。0：正常，不移动相机；1：跟随；2：锁定第一视角；3：上帝视角
      animationType: 3,
      ...
    })

    // 3 开始漫游
    animationTool.start()

    // 4 暂停漫游
    animationTool.pause

    // 5 结束漫游
    animationTool.stop()

室内漫游

    // 参考示例：
    http://webclient.smaryun.com/#/modules/cesium/analyse/commonAnalyse/indoor-roaming

    // ES5引入方式
    const { AnimationTool } = zondy.cesium
    // ES6引入方式
    import { AnimationTool } from "@mapgis/webclient-cesium-plugin"

    // 1 构造漫游路径数组，单位为笛卡尔3
    const pathPositions = [...]

    // 2 定义漫游工具对象
    animationTool = new AnimationTool(viewer, {
      //类型指定为routes
      toolType: 'routes',
      // 漫游路径(笛卡尔3数组)
      positions: pathPositions,
      // 设置漫游的视角类型。0：正常，不移动相机；1：跟随；2：锁定第一视角；3：上帝视角
      animationType: 1,
      ...
    })

    // 3 开始漫游
    animationTool.start()

    // 4 暂停漫游
    animationTool.pause

    // 5 结束漫游
    animationTool.stop()

模型沿地形漫游

    // 参考示例：
    http://webclient.smaryun.com/#/modules/cesium/analyse/commonAnalyse/model-terrain-roaming

    // ES5引入方式
    const { AnimationTool } = zondy.cesium
    // ES6引入方式
    import { AnimationTool } from "@mapgis/webclient-cesium-plugin"

    // 1 构造漫游路径数组，单位为笛卡尔3
    const pathPositions = [...]

    // 2 定义漫游工具对象
    animationTool = new AnimationTool(viewer, {
      //类型指定为routes
      toolType: 'routes',
      // 漫游路径(笛卡尔3数组)
      positions: pathPositions,
      // 设置漫游的视角类型。0：正常，不移动相机；1：跟随；2：锁定第一视角；3：上帝视角
      animationType: 0,
       // 是否获取路径点的真实高程
      isGetRealHeight: true,
      // 漫游的模型对象的url，为空表示不显示
      modelUrl:'http://webclient.smaryun.com:8200/3DData/Model/glb/CesiumMilkTruck.glb',
      //模型对象参数，详见ModelGraphics对象的文档
      model: {
        //放大比例
        scale: 20,
        //固定大小设为0
        minimumPixelSize: 0,
        // 模型贴地显示
        heightReference: Cesium.HeightReference.CLAMP_TO_GROUND
      },
      ...
    })

    // 3 开始漫游
    animationTool.start()

    // 4 暂停漫游
    animationTool.pause

    // 5 结束漫游
    animationTool.stop()

### 成员变量

类型: Number

#### # readonly animationModel

动画模型

类型: Number

#### # animationType

动画漫游的类型

类型: function

#### # callback

回调函数，返回一组动画信息

##### 示例

    callback: function (result) {
         console.log('到达站点' + result.index + '，站点坐标：' + result.position);
         console.log('当前点状态' + result.currenPositionStatus);
         console.log('实时位置' + result.position);
         console.log('运动开始时间' + result.startTime);
         console.log('当前时间' + result.currentTime);
         console.log('剩余运动距离' + result.remainDistance);
         console.log('运动总距离' + result.totalDistance);
         console.log('运动速度' + result.speed);
     }

类型: Number

#### # disFactor

用于判断当前点是否到达路径点

Deprecated:
  - 在16.7.2版本中移除, 请使用`AnimationTool#callback`替代

类型: Number

#### # distance

偏移距离 （单位米）

类型: Number

#### # exHeight

附加高程

类型: Object

#### # firstPersonCameraFocusOffset

第一人称视角下，相机焦点的偏移值。向前：offsetX；向左：offsetX；向上:offsetZ

类型: Boolean

#### # followSwitchMouseEvent

布尔类型，默认为false，切换跟随视角下的鼠标点击事件

Deprecated:
  - 在16.7.2版本中移除, 用户需要自定义鼠标控制逻辑，可在应用层参考`screenSpaceCameraController`鼠标事件设置

类型: Object

#### # readonly followViewCameraHPR

跟随视角下，相机的初始heading，pitch，range

类型: Number

#### # heading

航向角 （单位弧度）

类型: Number

#### # headingTargetPosition

根据Z轴旋转

类型: Boolean

#### # isAddViewshedAnalysis

是否挂载动态可视域

类型: Boolean

#### # isGetPositionNow

是否获取当前点坐标，默认为false，为true时，需配合返回当前点坐标的回调函数一起使用

Deprecated:
  - 在16.7.2版本中移除, 请使用`AnimationTool#callback`替代

类型: Boolean

#### # isLoop

是否循环

类型: Boolean

#### # isSetModelPosture

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

类型: Boolean

#### # isShowPath

是否显示漫游路径，计划废弃，请使用 `AnimationTool#showPath` 来控制漫游路径的显隐

Deprecated:
  - Yes

类型: Number

#### # modelHeading

模型的方位角

类型: Object

#### # modelOffset

模型相对自身的平移值，单位为米。向前：offsetX；向左：offsetY；向上:offsetZ

类型: Number

#### # modelPitch

模型的俯仰角

类型: Number

#### # modelRoll

模型的倾斜角

类型: Number

#### # offsetStartPositionDistance

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

类型: Boolean

#### # onPositionTag

是否执行回调函数的功能，默认为false不执行

Deprecated:
  - 在16.7.2版本中移除, 请使用`AnimationTool#callback`替代

类型: Boolean

#### # pause

控制动画的暂停

类型: Number

#### # pitch

俯仰角 （单位弧度）

类型: Number

#### # pitchTargetPosition

根据Y轴旋转

类型: Array

#### # positions

坐标点

类型: Number

#### # range

距离 (单位米)

类型: Number

#### # rangeTargetPosition

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

类型: Number

#### # rollTargetPosition

根据X轴旋转

类型: Object

#### # scanEffect

扫描特效实例

类型: Boolean

#### # showInfo

是否显示提示信息

类型: Boolean

#### # showPath

是否显示漫游路径

类型: Number

#### # speed

漫游速度

类型: Array

#### # speedArray

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

类型: Number

#### # speedupFactor

快进（设置倍数）

类型: Number

#### # startPositionIndex

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

类型: Array

#### # timeArray

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

类型: Object

#### # viewshedAnalysis

可视域实例

### 方法

#### # start()

开始漫游

#### # stop()

结束漫游