经纬志
首页 / Leaflet / API 文档

WMS

先看结论

按 OGC WMS 规范拼接 GetMap 请求的瓦片图层,用于加载 GeoServer、MapServer 发布的服务。

最后验证 2026-11-03 · Leaflet 1.9.4 · 更新 2026-10-28 · 引用本文
L.tileLayer.wms(baseUrl, options) → TileLayer.WMS

参数

参数默认值说明
layers''(必填)图层名,多个用英文逗号连接,大小写须与服务端一致
styles''样式名,留空用服务端默认样式
format'image/jpeg'返回格式,叠加层应改为 'image/png'
transparentfalse是否背景透明,配合 PNG 使用
version'1.1.1'WMS 版本;1.3.0 的 CRS 参数与轴顺序不同
crsnull请求坐标系,一般省略,由地图 CRS 推出
uppercasefalse是否把参数名转成大写,兼容只认大写的旧服务
minZoom0最小可见级别,继承 TileLayer
maxZoom18最大可见级别,继承 TileLayer
tileSize256瓦片边长,WMS 可返回 512 以减少请求数
opacity1整体不透明度
attribution''版权文字

成员

成员返回值说明
setParams(params, noRedraw?)this合并请求参数;默认立即重绘,noRedraw 为 true 时等下次刷新
setUrl(url)this换服务地址并清空现有瓦片
setOpacity(opacity)this调整透明度
setZIndex(zIndex)this调整同级层级
redraw()this强制重新请求所有瓦片
wmsParamsObject当前请求参数对象,只读查看用
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)。