Cesium3DTileFeature

Cesium3DTileset 的一个要素。

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

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

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

new Cesium.Cesium3DTileFeature(content, batchId)

Name Type Description
content Cesium3DTileContent
batchId number
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

获取或设置与要素颜色相乘的高亮颜色。当 此值为白色时,要素的颜色不会更改。当评估样式的 color 时,会为所有要素设置此值。
Default Value: Color.WHITE
获取与此要素关联的要素 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 或要素不是矢量瓦片中的折线,则返回 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.

Scene#pick 返回的所有对象都有一个 primitive 属性。此属性返回 包含要素的瓦片集。
获取或设置是否显示要素。当评估样式的 show 时,会为所有要素设置此值。
Default Value: true
获取包含要素的瓦片集。

Methods

static Cesium.Cesium3DTileFeature.getPropertyInherited(content, batchId, name)*

返回具有给定名称的要素属性值的副本。 如果要素位于具有元数据(3D Tiles 1.1) 或使用 3DTILES_metadata 扩展的瓦片集中,则会继承瓦片集、组和瓦片元数据。

为了解决名称冲突,此方法按元数据粒度从最具体到 最不具体解析名称,顺序为:要素、瓦片、组、 瓦片集。在每个粒度内,先解析语义,然后解析其他 属性。

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

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

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.

返回具有给定名称的要素属性值的副本。这包括来自此要素的 类以及使用批处理表层次结构时的继承类的属性。
Name Type Description
name string 属性的区分大小写名称。
Returns:
属性的值,如果要素没有此属性,则为 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)}`);
}
See:

getPropertyIds(results)Array.<string>

返回要素的属性 ID 数组。这包括来自此要素的 类以及使用批处理表层次结构时的继承类的属性。
Name Type Description
results Array.<string> optional 用于存储结果的数组。
Returns:
要素属性的 ID。
See:

hasProperty(name)boolean

返回要素是否包含此属性。这包括来自此要素的 类以及使用批处理表层次结构时的继承类的属性。
Name Type Description
name string 属性的区分大小写名称。
Returns:
要素是否包含此属性。
See:
设置具有给定名称的要素属性的值。

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

Name Type Description
name string 属性的区分大小写名称。
value * 将被复制的属性值。
Throws:
  • 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');
}
Need help? The fastest way to get answers is from the community and team on the Cesium Forum.