EarthSDK Tileset

三维瓦片类,对应Cesium的Cesium3DTileset

new Obj.Tileset()

Extends

Members

backFaceCulling : boolean

背面是否剔除
Default Value: true

cullWithChildrenBounds : boolean

Optimization option. Whether to cull tiles using the union of their children bounding volumes.
Default Value: true

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:

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:

imageBasedLightingFactor : array

optional Scales the diffuse and specular image-based lighting from the earth, sky, atmosphere and star skybox. 分别对应散射光强和镜面光强
Default Value: [1, 1]

lightColor : array

The color and intensity of the sunlight used to shade models.
默认值为undefined

luminanceAtZenith : number

optional The sun's luminance at the zenith in kilo candela per meter squared to use for this model's procedural environment map.
Default Value: 0.5

maximumMemoryUsage : number

默认值512M
Default Value: 512

maximumScreenSpaceError : number

值越小越精细、值越大越粗糙。取值范围(0, +∞)
Default Value: 16

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

url : string

三维瓦片数据服务路径
Default Value: ''

xbsjClippingPlanes : object

剖切面设置
Default Value: ''

xbsjCriticalElevation : number

水淹高度设置
Default Value: -Infinity

xbsjCriticalElevationColor : array

类型是一个包含4个元素的数组,元素为number类型,范围在0-1之间。
Default Value: -Infinity

xbsjFlattenGuid : string

一旦指定,则会根据响应guid的压平多边形集合来对三维瓦片数据进行压平处理
Default Value: ''

xbsjFrontFace : boolean

Default Value: true

xbsjGuid : string|undefined

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

Deprecated: true

xbsjLeftBottomView : boolean

多视口情况下,是否显示在左下角。
Default Value: true

xbsjLeftTopView : boolean

多视口情况下,是否显示在左上角。
Default Value: true

xbsjMaxViewDistance : number

最大可视距离
Default Value: -Infinity

xbsjMinViewDistance : number

最小可视距离
Default Value: 0

xbsjPosition : array

位置数组 [经度、纬度、高度]
注意:xbsjUseOriginTransform为false,此属性才会生效。经度、纬度的单位是弧度,高度的单位是米。

xbsjRightBottomView : boolean

多视口情况下,是否显示在右下角。
Default Value: true

xbsjRightTopView : boolean

多视口情况下,是否显示在右上角。
Default Value: true

xbsjRotation : array

姿态数组 [偏航角、俯仰角、翻转角]
注意:xbsjUseOriginTransform为false,此属性才会生效。偏航角、俯仰角、翻转角的单位是弧度。
Default Value: [0, 0, 0]

xbsjScale : array

缩放数组 [x向,y向,z向]
注意:xbsjUseOriginTransform为false,此属性才会生效。
Default Value: [1, 1, 1]

xbsjStyle : string

样式设置
具体使用参见:
Default Value: ''
Example:
使用范例:

// 1 推荐这样使用,不容易出错:
xbsjTileset.xbsjStyle = JSON.stringify({
    color: {
        conditions: [
            ["${sid} === 140056", "rgb(255, 122, 0)"],
            ["true", "rgb(255, 255, 122)"]
        ]
    }
});

补充说明1:  
  
假设Cesium中的写法是这样的:  
csiumTileset.style = new Cesium.Cesium3DTileStyle({  
    color : {  
        conditions : [  
            ['${Height} >= 100', 'color("purple", 0.5)'],  
            ['${Height} >= 50', 'color("red")'],  
            ['true', 'color("blue")']  
        ]  
    },  
    show : '${Height} > 0',  
    meta : {  
        description : '"Building id ${id} has height ${Height}."'  
    }  
});  
转化成EarthSDK中的写法就是:  
xbsjTileset.xbsjStyle = JSON.stringify({  
    color : {  
        conditions : [  
            ['${Height} >= 100', 'color("purple", 0.5)'],  
            ['${Height} >= 50', 'color("red")'],  
            ['true', 'color("blue")']  
        ]  
    },  
    show : '${Height} > 0',  
    meta : {  
        description : '"Building id ${id} has height ${Height}."'  
    }  
});  
  
补充说明2:  
  
问:示例当中 "${sid} === 140056" 中的 140056为何不加单引号?形式如 "${sid} === '140056'"  
答:因为sid这个属性的值的类型不是字符串,而是数字;如果是字符串,就需要加引号。  

补充说明3:  
如果需要恢复到默认设置,或者不设置任何style,可以直接设置成空字符串,如下所示:  
xbsjTileset.xbsjStyle = ’‘

// 2 这样使用也可以,但是需要**注意**,因为使用了es6的模板字符串,内部$的地方,需要加反义符\  
 xbsjTileset.xbsjStyle = `  
     var style = {  
         color: {  
             conditions: [  
                 ["\${sid} === 140056", "rgb(255, 122, 0)"],  
                 ["true", "rgb(255, 255, 122)"]  
             ]  
         }  
     }  
 `  
 
// 3 这样使用也可以,但是需要**注意**:  
//   a 因为使用了es6的模板字符串,内部$的地方,需要加反义符\  
//   b es6模板字符串中的字符必须符合json格式规范,比如必须使用双引号来引用key。  
 xbsjTileset.xbsjStyle = `  
     {  
         "color": {  
             "conditions": [  
                 ["\${sid} === 140056", "rgb(255, 122, 0)"],  
                 ["true", "rgb(255, 255, 122)"]  
             ]  
         }  
     }  
 `  
See:

readonlyxbsjType : string

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

xbsjUseOriginTransform : boolean

如果不使用默认位置姿态,将以xbsjPosition、xbsjRotation属性的设置为准来调整三位瓦片的位置姿态。

Methods

destroy()undefined

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

flyTo()

飞入该对象
Inherited From:

getOriginPosition()Array

获取三维瓦片数据的原始位置
Returns:
一个长度为3的数组,元素分别表示 经度、纬度、高度,注意其中的经度和纬度的单位是弧度、高度的单位是米。

isDestroyed()boolean

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

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);