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

GeoJSON 面

两个示意范围的矩形面,颜色来自要素属性。 填充与边界分两个图层,边界可以单独开关。

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

说明

面的颜色用 ['get', 'color'] 从属性取值, 单个面换色只改数据,不必为每种颜色建图层。 环形坐标首尾相同,这一点与 Turf 的要求一致。

map.addLayer({
  id: 'regions-fill',
  type: 'fill',
  source: 'regions',
  paint: {
    'fill-color': ['get', 'color'],
    'fill-opacity': 0.28
  }
});
图层作用可见性控制
regions-fill半透明填充始终可见
regions-line边界线复选框切换 visibility

边界与填充共用 source,但绘制顺序需要注意:line 在 fill 之后添加, 线才不会被半透明填充盖住。反过来的话边界会发暗。

点击回调里用 e.lngLat 而不是面的中心作为弹窗位置, 这样在大型面里点击哪里,弹窗就出现在哪里。

示例中的矩形只是演示形状,不代表真实行政区划。 接入真实边界时,注意面可能带洞、可能是 MultiPolygon, fill 图层都能直接渲染,不需要拆分。