DeckglLayer

deck.gl 接入图层,把 deck.gl 的图层画进地图的 WebGL 上下文。

使用方自行引入全局 deck(@deck.gl/core 或 dist 全包),支持的最高版本是 8.9.x。 9.x 会在初始化时报错,此时图层走 onError、getStatus() 变为 'error',底图不受影响。

deck 用的是标准 web-mercator 的 MapView,图层每帧从地图相机同步 viewState: 中心点、层级、pitch(来自 map.getTilt())、bearing(-map.getHeading(),方向相反)。

层级按 deck 的定义精确换算 —— deck 的世界宽度是 512 × 2^zoom 像素, 图层用 log2(map.worldSize() / 512) 得到,不是经验常数,地图瓦片口径变了也不会错位。

controller 被强制关掉:平移缩放由地图接管,deck 只负责绘制。 需要 deck 的拾取能力时用 getDeck().pickObject(...) 自行调用。

构造函数

  • 创建 deck.gl 图层。需全局 deck 已加载

    参数类型说明
    options 可选DeckglLayerOptions配置项,layers 之外的键原样透传给 deck.Deck
    属性类型说明
    animationboolean是否每帧自动重绘。deck 自身的数据/动画就绪会通过内部机制唤起重绘, 只有需要持续动画时才开
    layersany[]deck.gl 图层数组
    maxZoomnumber最大显示缩放等级
    minZoomnumber最小显示缩放等级
    onDestroyFunction图层销毁时回调,此时 Deck 还没 finalize
    onErrorFunctionDeck 创建失败、deck.gl 自身报错或渲染抛错时回调。 deck.gl 自己的 onError 不会被透传给 deck.Deck —— 它抛出的原生 Error 会被 归一化成 DeckglLayerError 再交给这里,避免同一个回调收到两种参数形状。 单帧渲染抛错是可恢复的:只累计次数、连续失败 30 帧才把图层置为 'error' 并停止绘制, 控制台只报第一次
    onInitFunctionDeck 实例创建完成时回调
    opacitynumber透明度。本图层不消费这个值 —— deck 的透明度请在各 deck 图层的 getFillColor / opacity 等 prop 上设
    referCenterPoint图层参考中心点。deck 用的是经纬度,本字段只影响与其他可视化图层一致的记账, 对 deck 的绘制没有直接影响
    renderStage"building" | "poi"绘制阶段,图层绘制在该阶段之后(即叠在其上)。 不设表示默认落点:覆盖物之后、3D 楼块之前
    visibleboolean是否显示
    zIndexnumber显示层级,小的先画

    返回值 DeckglLayer

    示例代码1

    const layer = new BMap.DeckglLayer({
    layers: [
    new deck.ScatterplotLayer({
    id: 'scatter',
    data: [{position: [116.404, 39.915]}],
    getPosition: (d: any) => d.position,
    getFillColor: [255, 140, 0, 200],
    getRadius: 60,
    radiusMinPixels: 4
    })
    ]
    });
    map.addLayer(layer);

    // 换数据 / 换图层
    layer.setProps({layers: [ /* 新的 deck 图层 */ ]});

deck 操作

  • 返回内部的 Deck 实例,需要拾取、导出等 deck 原生能力时用

    返回值 any

  • 更新 deck props,最常用的是 layers。会与已有 props 浅合并

    参数类型说明
    propsRecord<string, any>

    返回值 DeckglLayer

动画

  • 返回值 boolean

  • 返回值 void

接入与移除

显示属性

  • 返回值 number

  • 返回值 "building" | "poi"

  • 返回值 boolean

  • 返回值 number

  • 参数类型说明
    opacitynumber

    返回值 void

  • 参数类型说明
    centerPoint

    返回值 void

  • 参数类型说明
    stage"building" | "poi"

    返回值 void

  • 参数类型说明
    visibleboolean

    返回值 void

  • 参数类型说明
    zIndexnumber

    返回值 void

状态查询

  • 返回值 Float64Array

  • 返回值 "pending" | "ready" | "error"

  • 返回值 number