Cesium3DTileFeature

new Cesium.Cesium3DTileFeature ()

Cesium3DTileset 的一个特性。

提供对存储在图块批处理表中的特征属性的访问,以及分别通过 Cesium3DTileFeature#show Cesium3DTileFeature#color 显示/隐藏特征和更改其突出显示颜色的能力。

Cesium3DTileFeature 对象的修改具有图块内容的生命周期。如果 tile 的内容被卸载,例如,由于它不在视野中并且需要释放缓存中的空间以供可见的 tile 使用,请侦听 Cesium3DTileset#tileUnload 事件以保存任何修改。还要听 Cesium3DTileset#tileVisible 事件以重新应用任何修改。

不要直接构造它。通过 Cesium3DTileContent#getFeature 或使用 Scene#pick 选择来访问它。

Example:
// On mouse over, display all the properties for a feature in the console log.
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

获取或设置与特征颜色相乘的突出显示颜色。当它为白色时,特征的颜色不会改变。这是在评估样式颜色时为所有功能设置的。
Default Value: Color.WHITE

readonly featureId : Number

获取与此功能关联的功能 ID。对于 3D Tiles 1.0,将返回批次 ID。对于 EXT_mesh_features,这是所选特征 ID 集中的特征 ID。
Experimental

This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.

polylinePositions : Float64Array

获取包含折线的 ECEF 位置的类型化数组。如果 Cesium3DTileset#vectorKeepDecodedPositions 为 false 或要素不是矢量切片中的折线,则返回未定义。
Experimental

This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.

Scene#pick 返回的所有对象都有一个 primitive 属性。这将返回包含该特征的瓦片集。
获取或设置是否显示功能。这是在评估风格的表演时为所有功能设置的。
Default Value: true
获取包含特征的瓦片集。

Methods

static Cesium.Cesium3DTileFeature.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. 否则,返回未定义

有关 3D Tiles Next 的详细信息,请参阅 3D Tiles 的 3DTILES_metadata Extension 以及 glTF 的 EXT_structural_metadata Extension 。对于旧的 glTF 扩展,请参阅 EXT_feature_metadata 扩展

Name Type Description
content Cesium3DTileContent 访问元数据的内容
batchId Number 要为其获取属性的功能的批次 ID(或功能 ID)
name String 特征的语义或属性 ID。在每个元数据粒度中的属性 ID 之前检查语义。
Returns:
属性的值,如果特征没有此属性,则为 undefined
Experimental

This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy.

getProperty (name) *

返回具有给定名称的特征属性值的副本。这包括使用批处理表层次结构时此功能的类和继承类的属性。
Name Type Description
name String 属性的区分大小写的名称。
Returns:
属性的值,如果特征没有此属性,则为 undefined
Example:
// Display all the properties for a feature in the console log.
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)}`);
}
See:

getPropertyIds ( results ) Array.<String>

返回功能的属性 ID 数组。这包括使用批处理表层次结构时此功能的类和继承类的属性。
Name Type Description
results Array.<String> 可选 存储结果的数组。
Returns:
特征属性的 ID。
See:

deprecated getPropertyNames ( results ) Array.<String>

返回功能的属性名称数组。这包括使用批处理表层次结构时此功能的类和继承类的属性。
Name Type Description
results Array.<String> 可选 存储结果的数组。
Returns:
特征属性的名称。

Deprecated: true

See:

hasProperty (name) Boolean

返回要素是否包含此属性。这包括使用批处理表层次结构时此功能的类和继承类的属性。
Name Type Description
name String 属性的区分大小写的名称。
Returns:
特征是否包含此属性。
See:

setProperty (name, value)

使用给定名称设置特征属性的值。

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

Name Type Description
name String 属性的区分大小写的名称。
value * 将被复制的属性的值。
Throws:
Examples:
const height = feature.getProperty('Height'); // e.g., the height of a building
const name = 'clicked';
if (feature.getProperty(name)) {
    console.log('already clicked');
} else {
    feature.setProperty(name, true);
    console.log('first click');
}