CompositeProperty是一个属性,它包含一组关于Cesium对象的属性,每个属性可以是常量、函数或另一个属性。
Cesium中的许多对象都具有许多属性,例如可见性和位置。但是,当需要使用多个属性时,在代码中一一管理这些属性将变得非常麻烦。为了解决这个问题,Cesium提供了一个名为CompositeProperty的属性,它可以将多个属性捆绑在一起,并提供方便的访问方式。
new CompositeProperty(properties);
参数:
properties
:一个包含多个属性的对象,每个属性可以是常量、函数或另一个属性。创建一个CompositeProperty:
const composite = new Cesium.CompositeProperty({
visibility: true,
position: new Cesium.ConstantPositionProperty(new Cesium.Cartesian3(1, 2, 3))
});
上述示例中,composite
包含了两个属性:visibility
和position
。其中,visibility
是常量属性,而position
则是一个ConstantPositionProperty
对象。
通过使用getProperty
方法获取属性值:
console.log(composite.getProperty('visibility')); // 输出:true
console.log(composite.getProperty('position')); // 输出:{ x: 1, y: 2, z: 3 }
可以看到,getProperty
返回的值与传入CompositeProperty
构造函数的值是一样的。
我们也可以直接访问属性来获取值:
console.log(composite.visibility); // 输出:true
console.log(composite.position); // 输出:{ x: 1, y: 2, z: 3 }
这样做与使用getProperty
方法是等效的。
在某些情况下,属性可能会被修改。对于这种情况,CompositeProperty提供了两个方法:getActualProperty
和setValue
。
composite.getActualProperty(propertyName, time, result);
参数:
propertyName
:属性名称。time
:属性在指定时间的值。result
:(可选)如果提供,属性值将被存储在这个对象中。该方法返回在指定时间的属性值,而不管该属性是常量值还是动态值。如果未提供result
参数,则将创建一个新对象并返回该对象。
console.log(composite.getActualProperty('visibility', null)); // 输出:true
console.log(composite.getActualProperty('position', Cesium.JulianDate.now())); // 输出:{ x: 1, y: 2, z: 3 }
composite.setValue(propertyName, value, time);
参数:
propertyName
:属性名称。value
:要设置的属性值。time
:(可选)要对属性进行修改的时间。该方法在指定时间设置属性的值。如果未提供time
参数,则使用当前时间。
composite.setValue('visibility', false);
composite.setValue('position', new Cesium.Cartesian3(0, 1, 2), Cesium.JulianDate.now());