Skip to content

WallTrailLayer 流动墙体 ​

WallTrailLayer 用于展示电子围栏、区域边界与警戒墙,通过沿高度方向循环的栅栏纹理表现动态效果。支持配置墙体颜色、透明度、高度、流动方向与速度。

组件案例 ​

用法 ​

js
const layer = new MapLayers.WallTrailLayer(viewer, {
  color: '#33cc66', opacity: 0.7,
  height: 250, baseHeight: 0,
  speed: 3, direction: 'up',
})
layer.setData([{
  geometry: {
    type: 'Polygon',
    coordinates: [[
      [125.829, 44.1448], [125.839, 44.1448],
      [125.839, 44.1502], [125.829, 44.1502],
      [125.829, 44.1448],
    ]],
  },
  properties: { id: 'wall-1', name: '流动围墙' },
}])

layer.setOptions({ speed: 5, direction: 'down' })
// layer.stop(); layer.start()
// 退出页面时:layer.destroy()

配置 ​

字段默认值作用
color'#33cc66'CSS 颜色或 Cesium.Color
opacity0.7透明度,0~1,与颜色 alpha 相乘
height250二维坐标的墙高,米,须大于 0
baseHeight0墙底椭球高,米,支持负数
speed3流动速度,0 为静止;1 约每秒前进 0.06 个周期
direction'up''up' 向上、'down' 向下
repeat1竖向光带周期数,正整数
brightness3亮度倍率,非负数
image内置 wall-fence.png墙体纹理图片地址
closedfalse是否自动闭合线数据;面数据始终闭合
autoStarttrue是否自动播放;通过 setOptions 修改时同步切换播放状态

同名 properties 字段优先于图层配置,用于单项颜色、透明度、高度与流动样式。播放开关由图层统一控制。

数据规范 ​

使用 SDK { geometry, properties } 数组,支持 LineString、MultiLineString、Polygon、MultiPolygon;面中的外环与内环分别生成墙体。业务 ID 可为字符串或数字,同一图层内不得重复;未传 ID 时自动生成。

坐标为 WGS84 [经度, 纬度, 顶部高程?]。二维坐标的顶高为 baseHeight + height;第三维存在时直接作为该点的绝对顶高,须高于墙底。Polygon 无需手动重复首点,图层会自动闭合;闭合环至少包含 3 个不同点,开放线至少包含 2 个。

js
layer.addLayer({
  geometry: {
    type: 'LineString',
    coordinates: [[125.81, 44.13, 300], [125.82, 44.14, 600], [125.83, 44.135, 450]],
  },
  properties: { id: 'variable-wall', color: '#00e7ff', baseHeight: 20, speed: 5 },
})

方法 ​

方法作用
setData(data)校验后替换全部数据,并重置动画时间;保留当前播放与显隐状态
addLayer(item)增加一项,返回 Entity 或多部分 Entity 数组
setOptions(options) / getOptions()更新全局配置 / 获取配置;单项样式优先
getLayerById(id) / getLayersById(id)获取业务项的首个 / 全部 Entity
getLayerDataById(id)获取业务项数据
removeLayer(entity)移除该 Entity 所属的完整业务项
removeLayerById(id)按业务 ID 移除,返回移除的 Entity 数量
start() / stop()播放或继续 / 暂停;重复调用不叠加监听
resetTime()重置光带相位
show() / hide()显示并恢复原播放状态 / 隐藏并冻结动画
clearLayer()清空本图层数据与实体,并移除动画监听
destroy() / isDestroyed()销毁 / 检查销毁状态

动画按真实经过时间推进,不依赖帧率或 Cesium 时钟倍率;开启 requestRenderMode 时也会主动请求渲染。图层不改变 Viewer 的地形、深度检测、时钟或其他业务实体。需要真实地形遮挡时,可由应用开启 viewer.scene.globe.depthTestAgainstTerrain,并按地形高程配置墙底。

基于 Apache-2.0 许可发布