Skip to content

概述

Cesium 中的 实体(Entity) 支持将属性设置为动态值,而不是固定静态数据。通过使用 Cesium.CallbackProperty,你可以让实体在每一帧渲染时重新计算属性,实现实时变化的效果。

CallbackProperty第一个参数是回调函数,第二个参数是一个布尔值: false:表示这个属性是动态的,Cesium 每一帧都重新调用回调函数;true:表示这个属性是静态的,Cesium 只调用一次,不会再更新。

javascript
let length = 40000.0
viewer.entities.add({
  position: Cesium.Cartesian3.fromDegrees(121.47, 31.23, 100),
  cylinder: {
    length: new Cesium.CallbackProperty(() => {
      length += Math.sin(Date.now() / 500) * 500  // 周期性伸缩
      return length
    }, false),
    topRadius: 20000.0,
    bottomRadius: 20000.0,
    material: Cesium.Color.GREEN.withAlpha(0.5),
    outline: true,
    outlineColor: Cesium.Color.BLACK,
  },
})

let offset = 0
viewer.entities.add({
  position: Cesium.Cartesian3.fromDegrees(123.47, 31.23, 100),
  corridor: {
    positions: new Cesium.CallbackProperty(() => {
      offset += 0.001
      return Cesium.Cartesian3.fromDegreesArray([
        123.47 + offset, 31.23,
        122.47 + offset, 31.23,
        122.47 + offset, 30.23,
      ])
    }, false),
    width: 20000.0,
    material: Cesium.Color.RED.withAlpha(0.5),
  },
})
/