经纬志
首页 / MapLibre / 使用示例

面图层

20 个网格单元按数值分级着色,鼠标移上去透明度提高并显示数值。 高亮用的是要素状态,不重建数据,移动鼠标不会卡顿。

MapLibre GL JS 4.x · 更新 2026-10-28
源码与运行效果
运行效果

说明

着色用 step 表达式按 value 分五档。 分段而不是连续插值,是因为读图时需要明确的等级边界, 渐变反而不好判断某个格子属于哪一档。

悬停高亮依赖 promoteId: 'id':它把要素属性提升为 feature id,setFeatureState 才能定位到具体格子。 没有 id 的要素写状态不会生效,也不会有提示。

配置取值作用
promoteId'id'让 feature-state 可用
fill-colorstep 表达式按数值分档
fill-opacitycase + feature-state悬停时 0.58 → 0.92
fill-outline-color另设 line 图层面图层的描边常被忽略

鼠标在格子之间移动时要先清除上一格的状态,否则会留下一串高亮。 示例用一个变量记录当前 id,切换时成对写入 false 与 true。

悬停只改状态,不改数据。想让高亮在缩放后依然保持, 需要记住 id 并在数据更新后重新 setFeatureState, 因为 setData 会清空已有状态。