DeckglLayer
构造函数
创建 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 图层 */ ]});
动画
返回值 boolean
返回值 DeckglLayer
返回值 DeckglLayer
返回值 void
接入与移除
参数 类型 说明 mapMap返回值 DeckglLayer
返回值 Map
返回值 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(...)自行调用。