new Cesium3DTileFeature()
Cesium3DTileset 的一个要素。
提供对存储在瓦片批处理表中的要素属性的访问,以及通过
Cesium3DTileFeature#show 和 Cesium3DTileFeature#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扩展中的元数据。 元数据按从最具体到最一般的名称进行检查,并返回第一个匹配项。 元数据按以下顺序检查:
- 按语义检查批处理表(结构元数据)属性
- 按属性ID检查批处理表(结构元数据)属性
- 按语义检查内容元数据属性
- 按属性检查内容元数据属性
- 按语义检查瓦片元数据属性
- 按属性ID检查瓦片元数据属性
- 按语义检查子树元数据属性
- 按属性ID检查子树元数据属性
- 按语义检查组元数据属性
- 按属性ID检查组元数据属性
- 按语义检查瓦片集元数据属性
- 按属性ID检查瓦片集元数据属性
- 否则,返回undefined
Name Type Description contentCesium3DTileContent 用于访问元数据的内容
batchIdnumber 要获取属性的要素的批处理ID(或要素ID)
namestring 要素的语义或属性ID。在每个元数据粒度中,语义优先于属性ID进行检查。
Returns:
Type Description * 属性的值,如果该要素没有此属性,则返回 undefined。 -
getProperty(name){*}
-
返回具有给定名称的要素属性值的副本。这包括使用批处理表层次结构时, 该要素的类和继承类的属性。
Name Type Description namestring 属性的名称(区分大小写)。
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 resultsArray.<string> 可选 用于存储结果的数组。
Returns:
Type Description Array.<string> 该要素的属性ID。 -
hasProperty(name){boolean}
-
返回该要素是否包含此属性。这包括使用批处理表层次结构时, 该要素的类和继承类的属性。
Name Type Description namestring 属性的名称(区分大小写)。
Returns:
Type Description boolean 该要素是否包含此属性。 -
setProperty(name, value)
-
设置具有给定名称的要素属性的值。
如果具有给定名称的属性不存在,则会创建它。
Name Type Description namestring 属性的名称(区分大小写)。
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'); } -