Class: Cesium3DTileFeature

Cesium3DTileFeature

new Cesium3DTileFeature()

Cesium3DTileset 的一个要素。

提供对存储在瓦片批处理表中的要素属性的访问,以及通过 Cesium3DTileFeature#showCesium3DTileFeature#color 分别显示/隐藏要素和更改其高亮颜色的能力。

Cesium3DTileFeature 对象的修改与瓦片内容的生命周期相同。 如果瓦片内容被卸载(例如,由于它超出视野并需要在缓存中为可见瓦片释放空间), 请监听 Cesium3DTileset#tileUnload 事件以保存任何修改。同时监听 Cesium3DTileset#tileVisible 事件以重新应用任何修改。

不要直接构造此对象。通过 Cesium3DTileContent#getFeature 或使用 Scene#pick 进行拾取来访问它。

Example
// 鼠标悬停时,在控制台日志中显示要素的所有属性。
handler.setInputAction(function(movement) {
    const feature = scene.pick(movement.endPosition);
    if (feature instanceof Cesium.Cesium3DTileFeature) {
        const propertyIds = feature.getPropertyIds();
        const length = propertyIds.length;
        for (let i = 0; i < length; ++i) {
            const propertyId = propertyIds[i];
            console.log(`{propertyId}: ${feature.getProperty(propertyId)}`);
        }
    }
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);

Members

colorColor

获取或设置与要素颜色相乘的高亮颜色。当此值为白色时, 要素的颜色不会改变。当样式的color属性被评估时, 这会为所有要素设置。

Default Value:
Color.WHITE

readonly featureIdnumber

获取与此要素关联的要素ID。对于3D Tiles 1.0,返回批处理ID。 对于EXT_mesh_features,这是来自所选要素ID集的要素ID。

polylinePositionsFloat64Array

获取包含折线ECEF坐标的类型化数组。 如果 Cesium3DTileset#vectorKeepDecodedPositions 为 false 或该要素不是矢量瓦片中的折线,则返回 undefined。

readonly primitiveCesium3DTileset

所有由 Scene#pick 返回的对象都有一个 primitive 属性。 此属性返回包含该要素的瓦片集。

showboolean

获取或设置是否显示该要素。当样式的show属性被评估时, 这会为所有要素设置。

Default Value:
true

readonly tilesetCesium3DTileset

获取包含该要素的瓦片集。

Methods

static getPropertyInherited(content, batchId, name){*}

返回具有给定名称的要素属性的副本,检查来自3D Tiles 1.0格式、 EXT_structural_metadata和传统EXT_feature_metadata glTF扩展的所有元数据, 以及存在于tileset JSON(3D Tiles 1.1)或3DTILES_metadata 3D Tiles扩展中的元数据。 元数据按从最具体到最一般的名称进行检查,并返回第一个匹配项。 元数据按以下顺序检查:

  1. 按语义检查批处理表(结构元数据)属性
  2. 按属性ID检查批处理表(结构元数据)属性
  3. 按语义检查内容元数据属性
  4. 按属性检查内容元数据属性
  5. 按语义检查瓦片元数据属性
  6. 按属性ID检查瓦片元数据属性
  7. 按语义检查子树元数据属性
  8. 按属性ID检查子树元数据属性
  9. 按语义检查组元数据属性
  10. 按属性ID检查组元数据属性
  11. 按语义检查瓦片集元数据属性
  12. 按属性ID检查瓦片集元数据属性
  13. 否则,返回undefined
Name Type Description
content Cesium3DTileContent

用于访问元数据的内容

batchId number

要获取属性的要素的批处理ID(或要素ID)

name string

要素的语义或属性ID。在每个元数据粒度中,语义优先于属性ID进行检查。

Returns:
Type Description
* 属性的值,如果该要素没有此属性,则返回 undefined

getProperty(name){*}

返回具有给定名称的要素属性值的副本。这包括使用批处理表层次结构时, 该要素的类和继承类的属性。

Name Type Description
name string

属性的名称(区分大小写)。

Returns:
Type Description
* 属性的值,如果该要素没有此属性,则返回 undefined
Example
// 在控制台日志中显示要素的所有属性。
const propertyIds = feature.getPropertyIds();
const length = propertyIds.length;
for (let i = 0; i < length; ++i) {
    const propertyId = propertyIds[i];
    console.log(`{propertyId}: ${feature.getProperty(propertyId)}`);
}

getPropertyIds(results){Array.<string>}

返回该要素的属性ID数组。这包括使用批处理表层次结构时, 该要素的类和继承类的属性。

Name Type Description
results Array.<string> 可选

用于存储结果的数组。

Returns:
Type Description
Array.<string> 该要素的属性ID。

hasProperty(name){boolean}

返回该要素是否包含此属性。这包括使用批处理表层次结构时, 该要素的类和继承类的属性。

Name Type Description
name string

属性的名称(区分大小写)。

Returns:
Type Description
boolean 该要素是否包含此属性。

setProperty(name, value)

设置具有给定名称的要素属性的值。

如果具有给定名称的属性不存在,则会创建它。

Name Type Description
name string

属性的名称(区分大小写)。

value *

将被复制的属性值。

Throws:

继承的批处理表层次结构属性是只读的。

Type
DeveloperError
Examples
const height = feature.getProperty('Height'); // 例如,建筑物的高度
const name = 'clicked';
if (feature.getProperty(name)) {
    console.log('already clicked');
} else {
    feature.setProperty(name, true);
    console.log('first click');
}