经纬志
首页 / deck.gl / API 文档

WMSLayer

先看结论

WMS 图层。按当前视图范围拼接 GetMap 请求,把服务端返回的图片贴到地图上, 适合对接已有的 GIS 服务。

最后验证 2026-11-03 · deck.gl 9.0 · 更新 2026-10-29 · 引用本文
new deck.WMSLayer(props)

核心参数

参数默认说明
data必填WMS 服务的 GetMap 地址,不带查询串
layers必填图层名,多个用逗号分隔
srs'EPSG:4326'请求使用的坐标系
version'1.3.0'WMS 版本,影响参数名与坐标轴顺序
styles''样式名,留空使用服务端默认样式
transparenttrue是否请求背景透明的图片
serviceType'wms''wms' 或 'wms-c',后者按瓦片请求
opacity1整体透明度
pickablefalse是否参与拾取

示例

var wms = new deck.WMSLayer({
  id: 'landuse',
  data: 'https://gis.example.com/geoserver/wms',
  layers: 'planning:landuse_2025',
  srs: 'EPSG:3857',
  version: '1.3.0',
  styles: '',
  transparent: true,
  opacity: 0.7
});

1.3.0 的坐标轴顺序

WMS 1.3.0 对 EPSG:4326 使用纬度在前、经度在后的 BBOX 顺序,1.1.1 则是经度在前。传错版本会出现 「图片被拉伸到错误位置」而不是报错。服务端只支持 1.1.1 时, 把 version 改为 '1.1.1',否则整幅图会跑到高纬度区域。

与 TileLayer 的取舍

WMSLayer 每次视图变化都重新请求整幅图片,范围越大服务端渲染越慢; 服务支持 WMTS 或 XYZ 时,改用 TileLayer 按瓦片请求, 缓存命中率更高。WMS 的优势是服务端已经在做符号化, 客户端不用重复实现样式规则。

v9 的不可变更新

deck.gl 9 的图层不可变,切换图层名或坐标系必须新建实例。 clone 后通过 deckgl.setProps 替换 layers:

var next = wms.clone({
  layers: 'planning:landuse_2021',
  opacity: 0.5
});

deckgl.setProps({ layers: [next] });

请求参数受服务端白名单限制。部分 WMS 服务只允许特定 BBOX 尺寸或坐标系,超出范围直接返回异常图片(XML 错误页), 表现为地图上一块空白。打开网络面板检查 GetMap 响应内容即可定位。

引用本文

经纬志(2026)。《WMSLayer》。https://www.jingweizhi.com/deckgl/api/wms-layer.html(访问日期 2026-11-03)。