除百度地图自身的图层外,地图还支持叠加符合标准切片规范的第三方图层服务:WMS 服务使用 BMap.WMSLayer,WMTS 服务使用 BMap.WMTSLayer,按级别行列号切片的标准栅格瓦片(XYZ、TMS)使用 BMap.RasterTileLayer,矢量瓦片(MVT/PBF)使用 BMap.MVTLayer。四类图层都通过 map.addLayer 添加到地图上。
第三方服务的瓦片通常基于 EPSG:3857(Web 墨卡托)切片,与百度地图使用的 BD09MC 坐标系不同,图层内部已完成坐标转换,无需开发者额外处理。
WMS 是按范围出图的服务,使用 BMap.WMSLayer 加载。url 为 WMS 服务地址,请求参数统一写在 params 对象中。
var wmsLayer = new BMap.WMSLayer({url: 'https://services.geodata.state.gov/geoserver/ows', // WMS 服务地址params: {LAYERS: 'wp:DoS_WP_High_Resolution', // 必填,多个图层用逗号分隔STYLES: 'wp:WP_noscale',FORMAT: 'image/png',TRANSPARENT: 'true',VERSION: '1.1.1'},minZoom: 3,maxZoom: 18,opacity: 0.8});map.addLayer(wmsLayer);
WMTS 是按级别行列号切片的标准服务,使用 BMap.WMTSLayer 加载。服务地址写在 url 中,Layer、Style、TileMatrixSet 等请求参数写在 params 中,服务自身要求的密钥等参数也一并放入 params。
var wmtsLayer = new BMap.WMTSLayer({url: 'https://t0.tianditu.gov.cn/img_w/wmts', // WMTS 服务地址params: {Layer: 'img',Style: 'default',TileMatrixSet: 'w',Format: 'tiles',tk: '您的密钥' // 第三方服务自身要求的密钥},minZoom: 1,maxZoom: 18});map.addLayer(wmtsLayer);
按级别行列号切片的瓦片服务(XYZ、TMS 等)使用 BMap.RasterTileLayer 加载。在必填参数 url 中描述瓦片请求地址,再通过 map.addLayer(layer) 添加到地图。
var rasterLayer = new BMap.RasterTileLayer({url: 'https://mapopen-pub-jsapigl.bj.bcebos.com/tms-bj/{z}/{x}/{reverseY}.png', // 瓦片地址模板useThumbData: true, // 缩放时复用跨级别瓦片,避免过渡闪白minZoom: 7, // 最小显示级别maxZoom: 12 // 最大显示级别});map.addLayer(rasterLayer); // 添加图层
{x}、{y}、{z}:瓦片的列号、行号与级别,适用于 XYZ 规范的瓦片服务。
{-y} 或 {reverseY}:按 TMS 规范翻转后的行号,TMS 服务的瓦片行号方向与 XYZ 相反,使用该占位符即可自动换算。
{s}:子域名,配合 subdomains 数组轮询使用,用于突破浏览器对单域名并发请求数的限制。
MVT(Mapbox Vector Tile,PBF 格式)矢量瓦片使用 BMap.MVTLayer 加载。与栅格瓦片不同,矢量瓦片在前端渲染,可以自定义点、线、面样式,也可以响应鼠标交互。通过 layers 声明需要渲染的图层,通过 style 设置样式。
var mvtLayer = new BMap.MVTLayer({tileUrlTemplate: 'https://您的服务地址/[z]/[x]/[y].pbf',minZoom: 3,maxZoom: 18,idProperty: 'id', // 要素唯一标识对应的属性字段style: {polyline: { strokeColor: '#3385ff', strokeWeight: 2 },polygon: { fillColor: '#3385ff', fillOpacity: 0.4, strokeColor: '#1a73e8' }},onclick: function (e) { // 点击命中要素时触发console.log(e);}});map.addLayer(mvtLayer);
BMap.WMSLayer
BMap.WMTSLayer
BMap.RasterTileLayer
BMap.MVTLayer
上一篇
下一篇