首页 / MapLibre / 使用示例
面图层
20 个网格单元按数值分级着色,鼠标移上去透明度提高并显示数值。 高亮用的是要素状态,不重建数据,移动鼠标不会卡顿。
源码与运行效果
说明
着色用 step 表达式按 value 分五档。
分段而不是连续插值,是因为读图时需要明确的等级边界,
渐变反而不好判断某个格子属于哪一档。
悬停高亮依赖 promoteId: 'id':它把要素属性提升为
feature id,setFeatureState 才能定位到具体格子。
没有 id 的要素写状态不会生效,也不会有提示。
| 配置 | 取值 | 作用 |
|---|---|---|
promoteId | 'id' | 让 feature-state 可用 |
fill-color | step 表达式 | 按数值分档 |
fill-opacity | case + feature-state | 悬停时 0.58 → 0.92 |
fill-outline-color | 另设 line 图层 | 面图层的描边常被忽略 |
鼠标在格子之间移动时要先清除上一格的状态,否则会留下一串高亮。 示例用一个变量记录当前 id,切换时成对写入 false 与 true。
悬停只改状态,不改数据。想让高亮在缩放后依然保持,
需要记住 id 并在数据更新后重新 setFeatureState,
因为 setData 会清空已有状态。