EarthSDK Path

路径

new Obj.Path()

Extends

Members

_currentPosition : boolean

是否循环播放
如果为false,则playing设置为true时,会从当前位置播放到最后一个关键点,并停止播放,此时playing属性会自动变成false。 若此属性为true时,播放到最后一个关键点以后,将自动重第一个关键点继续播放。
Default Value: false,

alwaysAlongThePath : boolean

始终沿着路径方向运动
Default Value: false

creating : boolean

是否处于创建状态
设置为true以后,将进入重新创建的状态;此时可以使用鼠标左键在三维窗口中点击来创建路径的关键点,当点击鼠标右键,则表示创建完成。此时该属性会自动变成false。
Default Value: false

currentD : number

当前步进距离
指当前播放状态下由第一个关键点沿路径运动到当前位置的长度,单位是米。
当前playing属性为false时,此属性恒定不变;当playing为true,此属性会自动增加。 随着currentD的变化,会实时计算currentPosition、currentRotation这两个属性。 currentPosition指当前位置,currentRotation指当前姿态
Default Value: 0

readonlycurrentPosition : Array.<number>

当前相机位置,形式如:[0, 0, 0]
该数组中的元素分别表示经度(单位弧度)、纬度(单位弧度)、高度(单位米)。 注意该属性,为只读属性!

readonlycurrentRotation : Array.<number>

当前相机姿态,形式如:[0, 0, 0]
该数组中的元素分别表示偏航角(单位弧度)、俯仰角(单位弧度)、翻转角(单位弧度)。 注意该属性,为只读属性!

currentShow : boolean

当前相机是否可见
当前相机指位于currentPosition处的一个相机。
此属性,主要用来显示当前播放的位置,方便调试。
注意:当设置cameraAttached为true时,务必手动将此属性设置为false。否则相机绑定以后,会发现前方有一个物体遮挡整个画面!
Default Value: false

currentSpeed : number

当前播放速度,单位为米/秒。
注意,此属性可以实时修改,修改后的速度立即生效,所以可以动态修改路径上物体的前进速度!
Default Value: 50.0,

customProp : string

用来临时存储客户需要的一些信息,方便使用
Inherited From:
Default Value: ''

destroyEvalString : string

销毁时的执行语句,只有在对象销毁时才会执行,方便用来清理随该对象创建时附带创建的资源
有一个内置变量p,表示当前对象。 注意对象的销毁除了使用destroyEvalString,还可以使用 disposers 属性来销毁。
Inherited From:
Default Value: ''
See:

disposers

用来收集资源销毁函数,并在析构时自动调用!
Inherited From:
Example:
// 示例1:
myObject.disposers.push(() => {
    // 此处执行需要销毁的资源
});

// 示例2:
// XE.MVVM.bind的返回值是一个函数,作用是用来解除双向绑定,
// 把它的返回值放到disposer中,那么对象销毁时就会执行解绑操作。
myObject.disposers.push(XE.MVVM.bind(xxx));

// 示例3:
// XE.MVVM.watch的返回值是一个函数,作用是用来取消监视,
// 把它的返回值放到disposer中,那么对象销毁时就会执行取消监视的操作。
myObject.disposers.push(XE.MVVM.watch(xxx));

readonlyearth : Earth

返回该对象的所属earth实例
Inherited From:

editing : boolean

是否处于编辑状态
设置为true以后,将进入重新创建的状态;此时可以使用鼠标左键在三维窗口中选取需要修改路径的关键点,当点击鼠标右键,则表示编辑完成。此时该属性会自动变成false。
Default Value: false

enabled : boolean

是否启用
Inherited From:

evalString : string

设置执行语句,
内部有一个内置的变量p,用来指示当前对象。
注意evalString每次进行属性设置都会执行一遍,如果evalString中有创建资源,资源需要记录,避免再次执行后销毁不了。
Inherited From:
Default Value: ''
Example:
myObject.evalString = `
  // 技巧1:p是一个内置变量,可以直接使用
  if (p._div) { // 技巧2:evalString有可能执行多次,这个地方的判断是避免div重复创建!
      return;
  }
  // 创建div
  const div = document.createElement('div');
  p._div = div;

  // 技巧3:可以通过p.earth来获取earth变量
  const earth = p.earth;
  `;
See:

readonlyguid : string

对象的唯一标识符
注意,对象一旦创建,guid不可更改!
Inherited From:

readonlylength : Array.<number>

当前路径的总长
注意当loop设置true和false时,即使关键点没有变化,但是总长是会变化的。
因为loop为true时,首末关键点会相连,这一段距离也会考虑到路径总长中。

loop : boolean

是否为环线
Default Value: false

loopPlay : boolean

是否循环播放
如果为false,则playing设置为true时,会从当前位置播放到最后一个关键点,并停止播放,此时playing属性会自动变成false。 若此属性为true时,播放到最后一个关键点以后,将自动重第一个关键点继续播放。
Default Value: false,

playing : boolean

是否处于播放状态
如果属性值为true,则所有'current'开头的相关属性会动态发生变化。 可以通过手动设置为false,来结束播放状态。 当loopPlay属性为false时,playing属性会在路径播放到最后一个关键点的位置时,自动变为false。
Default Value: false

preUpdateEvalString : string

设置每帧执行语句,和evalString的作用类似
它有三个内置变量,分别是p, scene, time,分别表示当前对象,Cesium的场景对象scene,Cesium的当前帧的时间time 需要注意的是它会每帧执行一次。
Inherited From:
Default Value: ‘’
Example:
myObject.preUpdateEvalString = `
  // 技巧1:p是一个内置变量,可以直接使用,还有scene,time都可以直接使用
     p._angle += 1;
     if (p._angle > 360.0) {
         p._angle = 0.0;
     }
     const angle = p._angle;
     // drawCanvas时使用angle来改变图像内容
     // ...
 `;
See:

show : boolean

显示路径
Default Value: true

showDirection : boolean

显示方向
Default Value: true

showHelper : boolean

是否显示辅助线框
Default Value: false

slices : number

曲线分段数
Default Value: 100

targetPicking : boolean

是否处于指定所有关键点相机的目标的状态
设置为true以后,所有关键点相机都会同时旋转,指向目标点。鼠标左键点击以后,该属性会自动变为false。 注意:关键点相机状态需要开启showDirection属性以后,才能方便观察!
Default Value: false

xbsjGuid : string|undefined

对象的唯一标识符
警告:该属性已废弃,请不要使用属性,且禁止修改此属性。
如果需要获取guid,请通过guid属性来获取。
Inherited From:

Deprecated: true

readonlyxbsjType : string

获取对象的类型信息
Inherited From:

Methods

addHeight(height)

同时给所有关键点增加高度
Name Type Description
height number 高度,单位米

currentCameraApply()

应用当前相机姿态
将该路径的currentPosition和currentRotation设置为相机的position和rotation。

destroy()undefined

销毁对象
警告:对象一旦销毁不可再次使用!
警告:挂在场景树上的对象禁止调用destroy方法,只要通过数组函数将其从场景树中移除,就会自动销毁!
Returns:
返回undefined
Inherited From:
Example:
// 使用范例
// 这样写的好处是,一旦对象销毁,会同时将引用该对象的变量同时置为undefined,防止再次使用。
this._myObject = this._myObject && this._myObject.destroy();

directionAlongThePath(includeIndex)

自动延沿路径计算关键点的姿态
注意:如果不设置参数,从修改所有关键点的姿态。
includeIndex是一个数组,囊括所有需要计算的关键点的索引。
Name Type Description
includeIndex Array.<number> | undefined 索引数组,如果有值,则指只处理includeIndex有的索引,如果无值,则全部处理

directionLerpBetween(first, last)

根据索引值为first和last的关键点的姿态,对first和last之间的关键点自动进行插值处理。
这样操作,可以做到自动进行相机姿态的平滑。
如果参数不写,则自动根据首末关键点的姿态插值中间所有关键点的姿态。
注意:first务必小于last
Name Type Default Description
first number | undefined 0 第一个索引
last number | undefined 最后一个索引

flyTo()

飞入该对象
Inherited From:

isDestroyed()boolean

检查对象是否已被销毁
警告:对象一旦销毁不可再次使用!仅此函数可以调用!
Returns:
对象是否已销毁
Inherited From:

targetTo(target, includeIndex)

将所有关键点的方向指向target所在位置
Name Type Description
target Array.<number> 用来表示观察位置,包含三个元素的数组,分别表示经度、纬度、高度
includeIndex Array.<number> 索引数组,如果有值,则指只处理includeIndex有的索引,如果无值,则全部处理

toAllJSON()object

数据整个JSOn对象,包括默认值
Returns:
创建的JSON数据对象
Inherited From:

toAllJSONStr()string

转化成JSON字符串,输出全部元素
Returns:
JSON格式化好的字符串
Inherited From:

toJSON()object

转化成一个JSON数据对象
注意:每次都会创建一个新对象!
Returns:
创建的JSON数据对象
Inherited From:

toJSONStr()string

转化成JSON字符串,默认元素不输出
Returns:
JSON格式化好的字符串
Inherited From:

xbsjFromJSON(jsonObject)

通过JSON数据对象来设置属性
Name Type Description
jsonObject *
Inherited From:
Example:
// 创建一个pin对象
const objConfig = {
    "name": 'Pin1',
    "xbsjType": "Pin",
    "position": [1.9017005694855162, 0.5972477268978722, 488.7695178987821],
    "near": 300,
    "show": false,
    evalString,
};
const pin = new XE.Obj.Pin(earth);  
pin.xbsjFromJSON(objConfig);