Appearance
RadarDomeEffect 雷达穹顶扫描
半椭球穹顶 + 旋转扫描切片效果,用于雷达 / 传感器探测范围可视化。在雷达站位置渲染一个地平线以上的半椭球穹顶,穹顶表面有一条窄扇形切片绕垂直轴持续旋转,模拟雷达探测范围与扫描过程。
能力定位
RadarDomeEffect 适合:
- 雷达 / 传感器探测范围可视化:雷达站周围半椭球覆盖范围示意;
- 预警区域扫描演示:旋转切片表示扫描线,突出探测方位;
- 通信基站覆盖示意:类穹顶覆盖的多站组合展示。
与 CircleWaveEffect(平面波纹)、CircleSpreadScanEffect(平面扩散扫描)不同, 本效果是三维半椭球穹顶,覆盖在雷达站上方,切片绕垂直轴 360° 旋转。
构造函数
ts
constructor(options: RadarDomeEffectOptions)ts
interface RadarDomeEffectOptions {
position: Cartesian3 // 雷达位置(世界坐标)
radius?: number // 穹顶半径(米),默认 200
color?: Color // 颜色,默认 Color.GREEN
scanSpeed?: number // 扫描切片旋转角速度(度/帧),默认 0.6
}| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
position | Cartesian3 | — | 雷达位置(世界坐标),必填,缺省抛错 |
radius | number | 200 | 穹顶半径(米),椭球三轴半径一致 |
color | Color | Color.GREEN | 穹顶与切片材质颜色 |
scanSpeed | number | 0.6 | 扫描切片旋转角速度(度/帧) |
生命周期
实现 Lifecycle<Viewer> 契约,on/off/destroy 均幂等:
ts
on(viewer: Viewer): void // 创建静态穹顶 + 旋转切片两个 ellipsoid 实体
off(viewer: Viewer): void // 移除本效果创建的全部实体(穹顶 + 切片)
destroy(viewer: Viewer): void // 等价于 off清理完整性:off/destroy 同时移除静态穹顶与旋转切片两个实体。源案例实现只移除 旋转切片、泄漏静态穹顶,本实现修复该缺陷。
基础示例
ts
import { RadarDomeEffect } from '@nexa/gis-cesium'
import { Cartesian3, Color } from 'cesium'
const effect = new RadarDomeEffect({
position: Cartesian3.fromDegrees(120, 30, 0),
radius: 300,
color: Color.GREEN.withAlpha(0.35),
scanSpeed: 0.8, // 扫描切片旋转角速度(度/帧)
})
effect.on(viewer)进阶示例
多雷达不同颜色、不同半径组合展示:
ts
import { RadarDomeEffect } from '@nexa/gis-cesium'
import { Cartesian3, Color } from 'cesium'
const domes = [
{ pos: Cartesian3.fromDegrees(120, 30, 0), radius: 300, color: Color.GREEN },
{ pos: Cartesian3.fromDegrees(119.92, 30.05, 0), radius: 180, color: Color.CYAN },
{ pos: Cartesian3.fromDegrees(120.08, 30.04, 0), radius: 150, color: Color.ORANGE },
].map((cfg) => {
const fx = new RadarDomeEffect({
position: cfg.pos,
radius: cfg.radius,
color: cfg.color.withAlpha(0.3),
})
fx.on(viewer)
return fx
})
// 演示到期后统一销毁,释放全部实体(穹顶 + 切片)
window.setTimeout(() => {
domes.forEach(fx => fx.destroy(viewer))
}, 120000)实现说明
- 静态穹顶:
ellipsoid实体,maximumCone = 90°,仅渲染地平线以上的半椭球, 开启轮廓线(outline: true,不透明度 1)增强边界辨识; - 旋转切片:第二个
ellipsoid实体,innerRadii ≈ 0.001(极薄壳层)、minimumClock/maximumClock = ±0.00001(极窄开角切片)、maximumCone = 90°; 通过orientation: CallbackProperty驱动headingPitchRollQuaternion每帧递增scanSpeed度(累计超过 360° 归零),实现绕垂直轴旋转; - 资源所有权:本效果创建的全部实体由
off/destroy移除,创建方无需单独清理。
清理责任
ts
effect.destroy(viewer) // 或 effect.off(viewer),等价且幂等重复调用 destroy/off 安全(无实体时为空操作)。
Cesium 版本限制
- 依赖 Cesium
Entity.ellipsoid(EllipsoidGraphics)与orientation: CallbackProperty; - 已验证目标版本:Cesium 1.133.1。