# Route
查阅Cesium API

#### new mars3d.graphic.Route(options)
graphic/custom/Route.js 58

动态实时轨迹路线，是由多个其他类型Graphic组合而成，方便一起控制和管理。
使用 `Route#addTimePosition` 方法来添加动画轨迹点位置。 如果只是显示单个模型等对象，建议直接使用对应的矢量对象，效率更高。

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | object | 参数对象，包括以下：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`position` | BaseGraphic.TimePosition | Cesium.SampledPositionProperty |  | 可选 时序坐标位置
`attr` | object |  | 可选 矢量数据的 属性信息，可以任意附加属性。
`convertStyle` | boolean | `false` | 可选 是否兼容外部标绘功能统一修改样式，进行拆分矢量样式到style中（如options.model.url可以传options.style.model_url）
`label` | LabelEntity.StyleOptions |  | 可选 使用 文本 对象，及其对应的样式
`billboard` | BillboardEntity.StyleOptions |  | 可选 使用 图标 对象，及其对应的样式 // * @param {Cesium.Cartesian3|boolean} [options.billboard.alignedAxis] 为true时自动使用VelocityVectorProperty
`point` | PointPrimitive.StyleOptions |  | 可选 使用 图标 对象，及其对应的样式
`model` | ModelPrimitive.StyleOptions |  | 可选 使用 gltf模型 对象，及其对应的样式
`circle` | CircleEntity.StyleOptions |  | 可选 使用 圆 对象，及其对应的样式
`coneTrack` | ConeTrack.StyleOptions |  | 可选 使用 圆锥体 对象，及其对应的样式
`path` | PathEntity.StyleOptions |  | 可选 使用 path轨迹 对象，及其对应的样式
`polyline` | PolylineEntity.StyleOptions |  | 可选 使用 polyline路线 对象，及其对应的样式 // * @param {number} [options.polyline.maxDistance] 设置保留的轨迹长度值（单位：米），不设置时保留所有的轨迹
`wall` | WallEntity.StyleOptions |  | 可选 使用 墙体 对象，及其对应的样式 // * @param {number} [options.wall.maxDistance] 设置保留的轨迹长度值（单位：米），不设置时保留所有的轨迹 // * @param {number} [options.wall.surface] 设置墙底部高度是否贴地
`highlight` | object |  | 可选 鼠标移入或单击(type:'click')后的对应高亮的部分样式，创建Graphic后也可以openHighlight、closeHighlight方法来手动调用
参数名称 | 类型 | 描述信息
--- | --- | ---
`label` | LabelEntity.StyleOptions | 可选 使用 文本 对象，及其对应的样式
`billboard` | BillboardEntity.StyleOptions | 可选 使用 图标 对象，及其对应的样式
`point` | PointPrimitive.StyleOptions | 可选 使用 图标 对象，及其对应的样式
`model` | ModelPrimitive.StyleOptions | 可选 使用 gltf模型 对象，及其对应的样式
`circle` | CircleEntity.StyleOptions | 可选 使用 圆 对象，及其对应的样式
`coneTrack` | ConeTrack.StyleOptions | 可选 使用 圆锥体 对象，及其对应的样式
`path` | PathEntity.StyleOptions | 可选 使用 path轨迹 对象，及其对应的样式
`polyline` | PolylineEntity.StyleOptions | 可选 使用 polyline路线 对象，及其对应的样式
`wall` | WallEntity.StyleOptions | 可选 使用 墙体 对象，及其对应的样式
`orientation` | Cesium.Property | object |  | 可选 自定义实体方向, 默认内部根据轨迹自动的
`fixedFrameTransform` | Cesium.Transforms.LocalFrameToFixedFrame | `Cesium.Transforms.eastNorthUpToFixedFrame` | 可选 参考系
`frameRate` | number | `1` | 可选 多少帧获取一次数据。用于控制效率，如果卡顿就把该数值调大一些。
`maxCacheCount` | number | `1000` | 可选 保留的坐标点数量, 当为-1时保留所有
`backwardExtrapolationType` | Cesium.ExtrapolationType | number | `Cesium.ExtrapolationType.HOLD` | 可选 当使用addTimePosition时，在第1个开始时间之前，NONE时不显示，HOLD时显示开始时间对应坐标位置
`forwardExtrapolationType` | Cesium.ExtrapolationType | number | `Cesium.ExtrapolationType.HOLD` | 可选 当使用addTimePosition时，在最后1个结束时间之后，NONE时不显示，HOLD时显示结束时间对应坐标位置
`numberOfDerivatives` | number | `0` | 可选 当使用addTimePosition设置为动画轨迹位置时，每个位置的导数的数量;即速度、加速度等。
`autoMiddleTimePosition` | boolean |  | 可选 当使用addTimePosition设置为动画轨迹位置时，如果中间缺少数据时是否自动添加中间点。
`clampToTileset` | boolean |  | 可选 是否进行贴模型。
`frameRateHeight` | number | `30` | 可选 clampToTileset：true时，多少帧计算一次贴模型高度
`camera` | object |  | 可选 视角模式设置，包括：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`type` | string |  | 可选 视角模式类型，包括：'':无、'gs':跟随视角、'dy':第一视角、'sd':上帝视角
`radius` | number |  | 可选 'gs'跟随视角时的 初始俯仰距离值（单位：米）
`heading` | number |  | 可选 'gs'跟随视角时的 初始方向角度值，绕垂直于地心的轴旋转角度, 0至360
`pitch` | number |  | 可选 'gs'跟随视角时的 初始俯仰角度值，绕纬度线旋转角度, -90至90
`followedX` | number | `50` | 可选 'dy'锁定第一视角时，距离运动点的距离（后方）
`followedZ` | number | `10` | 可选 'dy'锁定第一视角或'sd'上帝视角时，距离运动点的高度（上方）
`offsetX` | number | `0` | 可选 'dy'锁定第一视角时，锁定点的本身的X轴方向（前后）偏移值
`offsetY` | number | `0` | 可选 'dy'锁定第一视角时，锁定点的本身的Y轴方向（横向）偏移值
`offsetZ` | number | `0` | 可选 'dy'锁定第一视角时，锁定点的本身的Z轴方向（高度）偏移值
`popup` | string | Array | function |  | 可选 绑定的popup弹窗值，也可以bindPopup方法绑定
`popupOptions` | Popup.StyleOptions |  | 可选 popup弹窗时的配置参数，也支持如pointerEvents等`Popup`构造参数
`tooltip` | string | Array | function |  | 可选 绑定的tooltip弹窗值，也可以bindTooltip方法绑
`tooltipOptions` | Tooltip.StyleOptions |  | 可选 tooltip弹窗时的配置参数，也支持如pointerEvents等`Tooltip`构造参数
`contextmenuItems` | object |  | 可选 当矢量数据支持右键菜单时，也可以bindContextMenu方法绑定
`id` | string | number | `createGuid()` | 可选 矢量数据id标识
`name` | string |  | 可选 矢量数据名称
`show` | boolean | `true` | 可选 矢量数据是否显示
`eventParent` | BaseClass | boolean |  | 可选 指定的事件冒泡对象，默认为所加入的图层对象，false时不冒泡事件
`allowDrillPick` | boolean | function |  | 可选 是否允许鼠标穿透拾取
`flyTo` | boolean |  | 可选 加载完成数据后是否自动飞行定位到数据所在的区域。
`flyToOptions` | object |  | 可选 加载完成数据后是否自动飞行定位到数据所在的区域的对应 `BaseGraphic#flyTo`方法参数。

##### 参考:

- `支持的事件类型`

### 继承自

- BasePointPrimitive

### 属性值

#### 只读 alt : number
graphic/custom/Route.js 324

当前海拔高度值

#### billboard : BillboardPrimitive
graphic/custom/Route.js 180

图标 子对象

#### 只读 center : Cesium.Cartesian3
graphic/primitive/BasePointPrimitive.js 201

中心点坐标 （笛卡尔坐标）

继承自:
  - BasePointPrimitive#center

#### 只读 centerPoint : LngLatPoint
graphic/primitive/BasePointPrimitive.js 210

中心点坐标

继承自:
  - BasePointPrimitive#centerPoint

#### circle : CircleEntity
graphic/custom/Route.js 235

圆 子对象

#### coneTrack : ConeTrack
graphic/custom/Route.js 248

圆锥体 子对象

#### 只读 currIndex : number
graphic/custom/Route.js 385

当前飞行过的positions轨迹点数组的index顺序

#### debugAxis : boolean
graphic/primitive/BasePointPrimitive.js 350

是否显示3个方向轴，用于对比测试

继承自:
  - BasePointPrimitive#debugAxis

#### debugAxisLength : number
graphic/primitive/BasePointPrimitive.js 387

显示3个方向轴时的对应轴长度，用于对比测试

继承自:
  - BasePointPrimitive#debugAxisLength

#### 只读 groundPosition : Cesium.Cartesian3
graphic/custom/Route.js 315

求当前位置射线与地球相交点

#### 只读 hasAjaxPostion : boolean
graphic/primitive/BasePointPrimitive.js 621

是否 ajax后端动态坐标

继承自:
  - BasePointPrimitive#hasAjaxPostion

#### 只读 hasTimePostion : boolean
graphic/primitive/BasePointPrimitive.js 630

是否 time时序动态坐标

继承自:
  - BasePointPrimitive#hasTimePostion

#### heading : number
graphic/primitive/BasePointPrimitive.js 259

四周方向角，0至360度角度值
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#heading

#### height : number
graphic/primitive/BasePointPrimitive.js 218

坐标对应的高度值（单位：米）

继承自:
  - BasePointPrimitive#height

#### isPause : boolean
graphic/custom/Route.js 407

是否暂停状态 【针对全局时钟的，即 map.clock.shouldAnimate】

#### label : LabelPrimitive|*
graphic/custom/Route.js 167

文本 子对象

#### model : ModelPrimitive
graphic/custom/Route.js 206

模型 子对象

#### 只读 modelMatrix : Cesium.Matrix4
graphic/custom/Route.js 302

将图元(所有几何实例)从模型转换为世界坐标的4x4变换矩阵。
提示：父类属性，非所有子类都具备

#### multiplier : number
graphic/custom/Route.js 393

倍速，构造完成的对象，可以调用此属性调整速度。

#### objectsToExclude : Array.<object>|undefined
graphic/custom/Route.js 426

贴模型分析时，排除的不进行贴模型计算的模型对象，默认是当前本身，可以是： primitives, entities 等

#### 只读 orientation : Cesium.Quaternion
graphic/primitive/BasePointPrimitive.js 232

三维空间中的旋转 【仅部分对象支持】

继承自:
  - BasePointPrimitive#orientation

#### path : PathEntity
graphic/custom/Route.js 261

path路径 子对象

#### pitch : number
graphic/primitive/BasePointPrimitive.js 276

俯仰角，上下摇摆的角度，0至360度角度值
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#pitch

#### point : PointPrimitive|*
graphic/custom/Route.js 193

像素点 子对象

#### polyline : PolylineEntity
graphic/custom/Route.js 274

路线 子对象

#### position : Cesium.Cartesian3|LngLatPoint|BaseGraphic.AjaxPosition|BaseGraphic.TimePosition
graphic/primitive/BasePointPrimitive.js 74

位置坐标 （笛卡尔坐标）, 赋值时可以传入LatLngPoint对象

继承自:
  - BasePointPrimitive#position

#### 只读 positionShow : Cesium.Cartesian3
graphic/primitive/BasePointPrimitive.js 166

当前实时位置坐标（笛卡尔坐标）

继承自:
  - BasePointPrimitive#positionShow

#### 只读 positionsShow : Array.<Cesium.Cartesian3>
graphic/primitive/BasePointPrimitive.js 157

同 positions只是为了兼容entity的同名属性

继承自:
  - BasePointPrimitive#positionsShow

#### property : Cesium.SampledPositionProperty|Cesium.CallbackProperty
graphic/primitive/BasePointPrimitive.js 548

动态位置坐标

继承自:
  - BasePointPrimitive#property

#### 只读 readyPromise : Promise.<(ModelEntity|object)>
graphic/custom/Route.js 227

获取model模型子对象完成解析加载完成的Promise承诺

##### 使用示例:

    route.readyPromise.then(function(graphic) {
        console.log("load完成", graphic)
      })

#### roll : number
graphic/primitive/BasePointPrimitive.js 293

滚转角，左右摆动的角度，0至360度角度值
提示：父类属性，非所有子类都具备

继承自:
  - BasePointPrimitive#roll

#### 只读 startTime : Cesium.JulianDate
graphic/custom/Route.js 357

开始时间

#### 只读 stopTime : Cesium.JulianDate
graphic/custom/Route.js 371

结束时间

#### style : object
graphic/custom/Route.js 454

样式信息 【仅用于标绘，兼容其他graphic统一处理逻辑】

#### 只读 timeRange : object
graphic/primitive/BasePointPrimitive.js 639

获取当前时序坐标的开始时间和结束时间,返回的是Cesium.JulianDate格式

继承自:
  - BasePointPrimitive#timeRange

#### 只读 timeRangeStr : object
graphic/primitive/BasePointPrimitive.js 648

获取当前时序坐标的开始时间和结束时间,返回的是时间字符串

继承自:
  - BasePointPrimitive#timeRangeStr

#### 只读 trackedEntity : Cesium.Entity|*
graphic/primitive/BasePointPrimitive.js 328

用于 map.trackedEntity 追踪的

继承自:
  - BasePointPrimitive#trackedEntity

#### wall : WallEntity
graphic/custom/Route.js 287

墙体 子对象

### 方法

#### static mars3d.graphic.Route.clearLastCamera() → void
graphic/custom/Route.js 1501

清除最后一次的相机跟踪

##### 返回值:

无

#### addTimePosition(point, currTime) → BasePointPrimitive
graphic/primitive/BasePointPrimitive.js 669

设置并添加动画轨迹位置，按“指定时间”运动到达“指定位置”。 【仅LabelPrimitive、PointPrimitive、BillboardPrimitive、ModelPrimitive 等部分子类支持】

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`point` | LngLatPoint | Cesium.Cartesian3 | Array.<number> |  | 指定位置坐标
`currTime` | Cesium.JulianDate | Date | string | number | `Cesium.JulianDate.now()` | 可选 指定时间。当为String时，可以传入'2021-01-01 12:13:00'; 当为Number时，可以传入当前时间延迟的秒数。

##### 返回值:

当前对象本身，可以链式调用

继承自:
  - BasePointPrimitive#addTimePosition

#### autoSurfaceHeight(options) → Promise.<object>
graphic/primitive/BasePointPrimitive.js 741

异步计算更新坐标高度进行贴地(或贴模型)，内部自动调用`PointUtil#getSurfaceHeight`方法处理。

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 参数对象:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`has3dtiles` | boolean | `auto` | 可选 是否在3dtiles模型上分析（模型分析较慢，按需开启）,默认内部根据点的位置自动判断（但可能不准）
`objectsToExclude` | Array.<object> |  | 可选 贴模型分析时，排除的不进行贴模型计算的模型对象，可以是： primitives, entities, 或 3D Tiles features

##### 返回值:

异步计算完成的Promise

继承自:
  - BasePointPrimitive#autoSurfaceHeight

#### clearTimePostion(maxCacheCount) → void
graphic/primitive/BasePointPrimitive.js 657

清除所有时序动态坐标

参数名称 | 类型 | 描述信息
--- | --- | ---
`maxCacheCount` | number | 可选 保留的坐标数量，默认清除所有。

##### 返回值:

继承自:
  - BasePointPrimitive#clearTimePostion

#### computeModelMatrix(offest) → Cesium.Matrix4
graphic/custom/Route.js 1213

获取当前矩阵

参数名称 | 类型 | 描述信息
--- | --- | ---
`offest` | object | 偏移值
参数名称 | 类型 | 描述信息
--- | --- | ---
`x` | number | X轴方向偏移值,单位：米
`y` | number | Y轴方向偏移值,单位：米
`z` | number | Z轴方向偏移值,单位：米

##### 返回值:

当前矩阵

#### eachChildGraphic(method, context) → Route
graphic/custom/Route.js 901

遍历所有矢量数据并将其作为参数传递给回调函数

参数名称 | 类型 | 描述信息
--- | --- | ---
`method` | function | 回调方法
`context` | object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身,可以链式调用

#### flyToPoint(options) → void
graphic/custom/Route.js 1480

定位至当前时间所在的位置 (非相机位置)

参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`options` | object | `{}` | 可选 具有以下属性的对象:
参数名称 | 类型 | 描述信息
--- | --- | ---
`radius` | number | 可选 相机距离目标点的距离（单位：米）
`heading` | number | 可选 方向角度值，绕垂直于地心的轴旋转角度, 0至360
`pitch` | number | 可选 俯仰角度值，绕纬度线旋转角度, 0至360
`roll` | number | 可选 翻滚角度值，绕经度线旋转角度, 0至360
`duration` | number | 可选 飞行持续时间（秒）。如果省略，内部会根据飞行距离计算出理想的飞行时间。
`endTransform` | Cesium.Matrix4 | 可选 表示飞行完成后摄像机将位于的参考帧的变换矩阵。
`maximumHeight` | number | 可选 飞行高峰时的最大高度。
`pitchAdjustHeight` | number | 可选 如果相机的飞行角度高于该值，请在飞行过程中调整俯仰角度以向下看，并将地球保持在视口中。
`flyOverLongitude` | number | 可选 地球上2点之间总是有两种方式。此选项会迫使相机选择战斗方向以在该经度上飞行。
`flyOverLongitudeWeight` | number | 可选 仅在通过flyOverLongitude指定的lon上空飞行，只要该方式的时间不超过flyOverLongitudeWeight的短途时间。
`easingFunction` | Cesium.EasingFunction.Callback | 可选 控制在飞行过程中如何插值时间。

##### 返回值:

无

#### getCoord(options) → Object|Array.<Array>
graphic/custom/Route.js 1453

获取位置坐标 (其中坐标均为经纬度形式),用于导出JSON等方法

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | object | 可选 参数
参数名称 | 类型 | 描述信息
--- | --- | ---
`noAlt` | boolean | 可选 true时不导出高度值

##### 返回值:

位置坐标(经纬度数组形式)

#### getRectangle(options) → Cesium.Rectangle|object
graphic/custom/Route.js 1430

获取数据的矩形边界

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | boolean | 可选 控制参数
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`isFormat` | boolean | `false` | 可选 是否格式化，格式化时示例： { xmin: 73.16895, xmax: 134.86816, ymin: 12.2023, ymax: 54.11485 }

##### 返回值:

isFormat：true时，返回格式化对象，isFormat：false时返回Cesium.Rectangle对象

#### pause() → void
graphic/custom/Route.js 1551

暂停 【针对全局时钟的，即 map.clock.shouldAnimate】

##### 返回值:

无

#### proceed() → void
graphic/custom/Route.js 1564

继续 【针对全局时钟的，即 map.clock.shouldAnimate】

##### 返回值:

无

#### setCameraOptions(cameraOptions) → void
graphic/custom/Route.js 1520

更新视角模式,传入空值代表取消。

参数名称 | 类型 | 描述信息
--- | --- | ---
`cameraOptions` | object | 可选 参数，包括：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`type` | string |  | 可选 视角模式类型，包括：'':无、'gs':跟随视角、'dy':第一视角、'sd':上帝视角
`radius` | number |  | 可选 'gs'跟随视角时的 离目标的距离值（单位：米）
`heading` | number |  | 可选 'gs'跟随视角时的 初始方向角度值，绕垂直于地心的轴旋转角度, 0至360
`pitch` | number |  | 可选 'gs'跟随视角时的 初始俯仰角度值，绕纬度线旋转角度, 0至360 *
`followedX` | number | `50` | 可选 'dy'锁定第一视角时，距离运动点的距离（后方）
`followedZ` | number | `10` | 可选 'dy'锁定第一视角或'sd'上帝视角时，距离运动点的高度（上方）

##### 返回值:

无

### 定义的类型

#### mars3d.graphic.Route.EventType
graphic/custom/Route.js 21

当前类支持的`EventType`事件类型

##### 属性:

属性名称 | 类型 | 描述信息
--- | --- | ---
`change` | string | 变化了
`endItem` | string | 完成了一个传入坐标点的漫游
`end` | string | 完成了当前所有点的漫游
`add` | string | 添加对象
`remove` | string | 移除对象
`show` | string | 显示了对象
`hide` | string | 隐藏了对象
`popupOpen` | string | popup弹窗打开后
`popupClose` | string | popup弹窗关闭
`tooltipOpen` | string | tooltip弹窗打开后
`tooltipClose` | string | tooltip弹窗关闭
`contextMenuOpen` | string | 右键菜单 打开后
`contextMenuClose` | string | 右键菜单 关闭
`contextMenuClick` | string | 右键菜单 单击某一项后
`highlightOpen` | string | highlight高亮后
`highlightClose` | string | highlight关闭后
`click` | string | 左键单击 鼠标事件
`rightClick` | string | 右键单击 鼠标事件
`mouseOver` | string | 鼠标移入 鼠标事件
`mouseOut` | string | 鼠标移出 鼠标事件

##### 使用示例:

    //绑定监听事件
    graphic.on(mars3d.EventType.change, function (event) {
      console.log('坐标发生了变化', event)
    })

##### 参考:

- BaseClass#on
- BaseClass#off