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

动态改样式

同一份矢量瓦片,三套配色在按钮间即时切换。改的是绘制属性, 不是整份样式,图层的顺序、过滤与数据都不受影响。

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

说明

「按洲着色」使用 match 表达式读 CONTINENT; 「单色」换成颜色字面量;「暖色」则用 interpolate 按缩放过渡。 三种写法都能直接赋给 fill-color,切换时无需删除图层。

图层添加时指定了插入位置 countries-boundary, 因此新面层压在原底图的填充之上、边界之下,颜色变了也不会盖住国界线。

改动调用是否触发重排
填充色setPaintProperty(id, 'fill-color', expr)否
填充透明度setPaintProperty(id, 'fill-opacity', n)否
线宽setPaintProperty(id, 'line-width', expr)否
文字内容setLayoutProperty(id, 'text-field', expr)是,需重新排布

绘制属性改动只影响着色器参数,帧内即可生效;布局属性会触发 重新排布与碰撞检测,动画里频繁改字号会明显掉帧。

表达式里引用的属性必须真实存在。属性名写错时不会抛异常, 只是所有要素都落到 match 的默认分支,看起来像整体变成灰色。