经纬志
首页 / deck.gl / API 文档

H3HexagonLayer

先看结论

H3 六边形图层。每个数据项对应一个 H3 索引,图层把索引还原成六边形贴到球面上, 用于网格聚合与空间统计。

最后验证 2026-11-03 · deck.gl 9.0 · 更新 2026-10-29 · 引用本文
new deck.H3HexagonLayer(props)

核心参数

参数默认说明
data—数据数组,每项对应一个六边形
getHexagon必填返回 H3 索引字符串,如 '8928308280fffff'
getFillColor[0, 0, 0, 255]填充色,可按属性计算
getElevation1000挤出高度,米
extrudedfalse是否把六边形拉伸为柱体
wireframefalse挤出后只画边线
elevationScale1高度统一倍率
coverage10 到 1,控制六边形的填充比例,小于 1 时相邻格之间留缝
highPrecisionfalsetrue 时使用 H3 的精确边界,跨投影和五边形格子更准确
opacity / pickable1 / false透明度与拾取

示例

var hexes = new deck.H3HexagonLayer({
  id: 'h3-density',
  data: aggregated,
  getHexagon: function (d) { return d.h3; },
  getFillColor: function (d) {
    var v = Math.min(d.count / 800, 1);
    return [255 * v, 140 * (1 - v), 90, 190];
  },
  getElevation: function (d) { return d.count * 4; },
  extruded: true,
  elevationScale: 1,
  coverage: 0.92,
  pickable: true
});

依赖 h3-js

H3 索引的几何还原依赖 h3-js,它不在 deck.gl 主包里。 使用该图层前需要单独安装,版本与 deck.gl 9 匹配。 只用 h3-js 做聚合、由自己提供中心点坐标时, 改用 HexagonLayer 更省事。

coverage 的用途

coverage 为 1 时六边形彼此相接,视觉上像一块连续的蜂巢; 调到 0.7 左右会露出缝隙,能看清底图,也让高密度区域不至于糊成一片。 它不是缩放比例,而是每个格子向中心收缩的程度。

highPrecision 的代价

默认实现把六边形近似成规则多边形再投影,跨大范围时边缘会略有偏差; highPrecision: true 用 H3 给出的真实边界点, 形状更准确,但顶点数增加,数据量大时帧率下降。 只在需要精确边界(如与行政区划比对)时打开。

v9 的不可变更新

deck.gl 9 的图层不可变,改 coverage 或数据都要新建实例。 用 clone 加 deckgl.setProps 完成更新:

var next = hexes.clone({
  data: aggregatedV2,
  coverage: 1
});

deckgl.setProps({ layers: [next] });

层级要统一。同一图层里混用不同分辨率的 H3 索引,六边形大小会不一致, 看起来像随机缩放。聚合时先固定分辨率,再按该层级的格子汇总。

引用本文

经纬志(2026)。《H3HexagonLayer》。https://www.jingweizhi.com/deckgl/api/h3-hexagon-layer.html(访问日期 2026-11-03)。