cesium 中描述 entity 随时间动态变化时,必然要用到 property 插值,来对应时间和实体的状态,最近有用到这个属性,记录一下:
一般常用的插值有两种,一种是连续值插值SampleProperty,即给个时间段和一个状态区间,cesium会在区间内自己做平滑处理;
一种是枚举值插值TimeIntervalCollectionProperty,即一个时间段对应一个状态,不会做平滑插值。
假设现在有一个entity:
1 | let myEntity = vie.entities.add({ |
以下的source都是若干个 {时间,对应值组成的对象} 组成的数组list
SampleProperty用法:
首先是特殊的SampledProperty,使用SampledPositionProperty,方便设置entity的位置
1 | let propertyPosition = new Cesium.SampledPositionProperty(); |
其次是普通的SampledProperty,可以随意设置自定义的number值,平滑线性处理
1 | let customProperty = new Cesium.SampledProperty(Number); |
TimeIntervalCollectionProperty用法:
1 | let property = new Cesium.TimeIntervalCollectionProperty(Number); |
上述各种property赋值给entity后,监听clock时间变化取到对应的值,即可进行对应业务逻辑的实现
1 | viewer.clock.onTick.addEventListener(() => { |
至于混合的property:CompositeProperty
,即把上述两种property混合到一个property的用法,实现部分时间段线性变化,部分时间段跳跃枚举变化,理论上提供了对应的api,是可以实现的,由于暂时没用到,不做记录,后续遇到再研究。。。