Cesium3DTileFeature

new Cesium.Cesium3DTileFeature()

Cesium3DTileset 的一个特征。

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

Cesium3DTileFeature 对象的修改具有瓦片内容的生命周期。如果瓦片的内容被卸载,例如,由于它超出视野并需要 在缓存中释放空间以容纳可见的瓦片,请监听 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
获取与此特征关联的特征 ID。对于 3D Tiles 1.0,返回批处理 ID。对于 EXT_mesh_features,这是来自 选定特征 ID 集的特征 ID。
Experimental

此功能使用了3D Tiles规范中的部分内容,该规范尚未定稿,可能会在不遵循Cesium标准弃用政策的情况下发生更改。

polylinePositions : Float64Array

获取包含多线段的ECEF位置的类型化数组。如果 Cesium3DTileset#vectorKeepDecodedPositions 为 false 或特征不是向量瓦片中的多线段,则返回 undefined。
Experimental

此功能使用了3D Tiles规范中的部分内容,该规范尚未定稿,可能会在不遵循Cesium标准弃用政策的情况下发生更改。

所有由 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 扩展的所有元数据,以及在 瓦片集 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

有关 3D Tiles Next 的详细信息,请参见 3DTILES_metadata 扩展 以及 EXT_structural_metadata 扩展 的 glTF。有关遗留 glTF 扩展的信息,请参见 EXT_feature_metadata 扩展

Name Type Description
content Cesium3DTileContent 用于访问元数据的内容
batchId number 要获取属性的特征的批处理 ID(或特征 ID)
name string 特征的语义或属性 ID。语义在每个元数据细分中优先于属性 ID 进行检查。
Returns:
属性的值,如果特征没有此属性,则返回 undefined
Experimental

此功能使用了3D Tiles规范中的部分内容,该规范尚未定稿,可能会在不遵循Cesium标准弃用政策的情况下发生更改。

返回具有给定名称的特征属性值的副本。这包括在使用批处理表层次结构时来自该特征类及继承类的属性。
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> optional 存储结果的数组。
Returns:
特征属性的 ID。
See:

hasProperty(name)boolean

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

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

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');
}
需要帮助?获得答案的最快方法是来自社区和团队 Cesium Forum.