首页 / Leaflet / API 文档
WMS
先看结论
按 OGC WMS 规范拼接 GetMap 请求的瓦片图层,用于加载 GeoServer、MapServer 发布的服务。
L.tileLayer.wms(baseUrl, options) → TileLayer.WMS
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
layers | ''(必填) | 图层名,多个用英文逗号连接,大小写须与服务端一致 |
styles | '' | 样式名,留空用服务端默认样式 |
format | 'image/jpeg' | 返回格式,叠加层应改为 'image/png' |
transparent | false | 是否背景透明,配合 PNG 使用 |
version | '1.1.1' | WMS 版本;1.3.0 的 CRS 参数与轴顺序不同 |
crs | null | 请求坐标系,一般省略,由地图 CRS 推出 |
uppercase | false | 是否把参数名转成大写,兼容只认大写的旧服务 |
minZoom | 0 | 最小可见级别,继承 TileLayer |
maxZoom | 18 | 最大可见级别,继承 TileLayer |
tileSize | 256 | 瓦片边长,WMS 可返回 512 以减少请求数 |
opacity | 1 | 整体不透明度 |
attribution | '' | 版权文字 |
成员
| 成员 | 返回值 | 说明 |
|---|---|---|
setParams(params, noRedraw?) | this | 合并请求参数;默认立即重绘,noRedraw 为 true 时等下次刷新 |
setUrl(url) | this | 换服务地址并清空现有瓦片 |
setOpacity(opacity) | this | 调整透明度 |
setZIndex(zIndex) | this | 调整同级层级 |
redraw() | this | 强制重新请求所有瓦片 |
wmsParams | Object | 当前请求参数对象,只读查看用 |
addTo(map) / remove() | this | 挂载与销毁 |
var wms = L.tileLayer.wms('https://gis.example.com/geoserver/wms', {
layers: 'city:roads,city:water',
styles: '',
format: 'image/png',
transparent: true,
version: '1.3.0',
attribution: '© 城市地理信息中心',
opacity: 0.8,
maxZoom: 18
}).addTo(map);
/* 切换图层时不要重建,setParams 只改参数并重绘 */
document.getElementById('switch').addEventListener('click', function () {
wms.setParams({ layers: 'city:buildings' }, true);
wms.redraw();
});
/* 打印实际发出的 GetMap 地址,排查 400 时很有用 */
console.log(wms.getTileUrl({ x: 6745, y: 3104, z: 13 }));
叠加层必须用 PNG 并开 transparent。默认的 image/jpeg
会把空白区域填成白色,盖住底图。transparent: true 只是把参数发给服务端,
服务端没配置透明背景时仍然是不透明白底。
WMS 1.3.0 用 CRS 参数,且经纬度轴顺序变为「纬度, 经度」,
部分服务端会因此返回空白图或 400。遇到这类服务把 version 退回
'1.1.1'(用 SRS 参数)通常能直接解决。
服务返回的图片没有金字塔,缩放级别越大请求越慢,纯浏览场景优先考虑 WMTS 或切片。
经纬志(2026)。《WMS》。https://www.jingweizhi.com/leaflet/api/wms.html(访问日期 2026-11-03)。