Skip to content

DiffuseWallLayer 扩散墙 ​

DiffuseWallLayer 用于在指定点位展示环形扩散墙,适用于事件提示、警戒范围与区域辐射展示。

组件案例 ​

基本用法 ​

js
import { MapLayers } from 'b-map-viewer'

const layer = new MapLayers.DiffuseWallLayer(viewer, {
  color: '#ff4455',
  opacity: 0.8,
  radius: 1000,
  minRadius: 80,
  height: 350,
  heightChange: false,
  duration: 3000,
})

layer.setData([{
  geometry: { type: 'Point', coordinates: [125.834, 44.1475, 0] },
  properties: { id: 'wall-1', name: '警戒范围' },
}])

// 修改参数
layer.setOptions({ color: '#00e7ff', radius: 1500 })

// 开启高度变化
layer.setOptions({ heightChange: true, minHeight: 30 })

// 暂停、继续、重置进度
layer.stop()
layer.start()
layer.resetTime()

// 页面退出时销毁
layer.destroy()

配置项 ​

字段默认值作用
color'#ff4455'墙体颜色,支持 CSS 颜色和 Cesium.Color
opacity0.8墙体透明度,范围 0~1,与颜色 alpha 相乘
radius300最大扩散半径,米,须大于 minRadius
minRadius10起始扩散半径,米,须大于 0
height300初始墙高,米,须大于 0
heightChangefalse是否在向外扩散时逐渐降低墙高;关闭时保持 height
minHeight30开启高度变化时的最小墙高,米,须大于 0 且不大于 height
baseHeight0墙底高程,米
duration3000单次扩散周期,毫秒,须大于 0
speed1播放倍速;2 为双倍速,0 为静止在起始状态
slices128圆周分段数,3~4096 的整数
autoStarttrue加载数据后是否自动播放

每个周期结束后,半径恢复到 minRadius 并重新扩散。开启 heightChange 时,墙高也会恢复到 height。

数据格式 ​

传入 SDK { geometry, properties } 数组。geometry.type 使用 Point,坐标为 WGS84 [经度, 纬度, 墙底高程?]。未传第三维时使用 baseHeight,单项 properties.baseHeight 优先。

properties.id 为业务标识,支持字符串或数字,同一图层内不可重复;省略时自动生成。同名 properties 配置优先于全局配置,播放与显隐由图层统一控制。

js
layer.setData([
  {
    geometry: { type: 'Point', coordinates: [125.834, 44.1475, 0] },
    properties: { id: 'warning-a', color: '#ff4455', radius: 1000 },
  },
  {
    geometry: { type: 'Point', coordinates: [125.85, 44.16, 20] },
    properties: {
      id: 'warning-b',
      color: '#00e7ff',
      radius: 600,
      height: 200,
      heightChange: true,
      minHeight: 20,
    },
  },
])

方法 ​

方法作用
setData(data)替换全部数据并重置扩散进度,保留当前播放和显隐状态
addLayer(item)添加一个点位,返回对应的 Primitive
setOptions(options)修改全局配置;单项配置优先
getOptions()获取全局配置
getLayerById(id)按业务 ID 获取 Primitive
getLayerDataById(id)获取业务数据
getState(id)获取当前的 id、center、phase、radius、height;半径和墙高单位为米,进度范围为 0~1
start() / stop()播放或继续 / 暂停
resetTime()重置所有点位的扩散进度
show() / hide()显示并恢复播放 / 隐藏并暂停推进;已暂停的图层显示后仍保持暂停
removeLayer(primitive)移除指定 Primitive
removeLayerById(id)按业务 ID 移除,返回移除数量
clearLayer()清空本图层的数据和效果
destroy() / isDestroyed()销毁图层 / 检查是否已销毁

基于 Apache-2.0 许可发布