首页 / MapLibre / 使用示例
动态改样式
同一份矢量瓦片,三套配色在按钮间即时切换。改的是绘制属性, 不是整份样式,图层的顺序、过滤与数据都不受影响。
源码与运行效果
说明
「按洲着色」使用 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 的默认分支,看起来像整体变成灰色。