栅格图层 (Raster Layers)
作用:栅格图层由像素网格组成,通常用于显示预渲染的地图瓦片(如街道地图、卫星图像)或静态图片。它们是地图的基础背景。
特点:
由像素数据构成,放大到一定程度会失真(出现马赛克)。
通常是预渲染的图片,加载速度快。
不包含地理要素的属性信息,仅是视觉呈现。
常见的有瓦片图层(TileLayer)和图片覆盖物(ImageOverlay)。
常见类型
瓦片图层 (TileLayer)
- 作用:最常见的栅格图层,通过加载一系列预渲染的图片瓦片来构建地图。
- 实例化:
L.tileLayer(urlTemplate, options?) - 示例:
javascript
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
attribution:
'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
}).addTo(map);配置项
| 选项名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
minZoom | Number | 0 | 图层可显示的最小缩放级别。 |
maxZoom | Number | 18 | 图层可显示的最大缩放级别。 |
tileSize | Number | 256 | 瓦片的像素大小。 |
subdomains | String | 'abc' | 用于瓦片 URL 的子域名,例如 '{s}' 会被替换为 a, b, c。 |
errorTileUrl | String | '' | 瓦片加载失败时显示的图片 URL。 |
zoomOffset | Number | 0 | 用于调整瓦片的缩放级别。 |
tms | Boolean | false | 如果为 true,会将 Y 轴坐标反转,用于与 TMS 瓦片服务兼容。 |
zoomReverse | Boolean | false | 如果设置为 true,瓦片 URL 中使用的缩放级别将被反转 |
attribution | String | '' | 显示在地图右下角的版权信息。 |
opacity | Number | 1.0 | 图层透明度(0-1)。 |
zIndex | Number | 1 | 图层的 Z 轴顺序,值越大越靠上。 |
noWrap | Boolean | false | 如果为 true,地图不会在水平方向上重复。 |
bounds | LatLngBounds | null | 限制图层只在指定地理边界内显示。 |
detectRetina | Boolean | false | 如果为 true,会在 Retina 屏幕上请求 @2x 瓦片(如果可用)。 |
crossOrigin | Boolean | false | 设置瓦片图片的 crossOrigin 属性,用于 CORS。 |
referrerPolicy | Boolean/String | false | 设置瓦片图片的 referrerPolicy 属性,用于 CORS。 |
updateWhenIdle | Boolean | false | 仅在平移结束时加载新瓦片。 |
updateWhenZooming | Boolean | true | 平滑缩放动画(在触摸缩放或 flyTo() 时)会在每个整数缩放级别更新网格层 |
updateInterval | Number | 200 | 在平移时,瓦片不会在每 updateInterval 毫秒更新超过一次。 |
maxNativeZoom | Number | undefined | 瓦片源可提供的最大缩放级别数 |
minNativeZoom | Number | undefined | 瓦片源可提供的最小缩放级别数 |
pane | String | 'tilePane' | 图层的 DOM 元素将附加到的窗格名称 |
className | String | '' | 分配给瓦片图层的自定义类名 |
keepBuffer | Number | 2 | 在平移地图时,在卸载它们之前保持这些行和列的瓦片 |
事件
| 事件名 | 说明 |
|---|---|
tileabort | 瓦片正在加载但现在不再需要时触发 |
方法
| 方法名 | 说明 |
|---|---|
setUrl | 获取指定坐更新层的 URL 模板并重新绘制它标的瓦片 |
createTile | 创建指定坐标的瓦片元素 |
getTileUrl | 根据其坐标返回瓦片的 URL |
图片覆盖物 (ImageOverlay)
- 作用:在地图的指定地理边界内叠加一张静态图片。
- 实例化:
L.imageOverlay(imageUrl, bounds, options?) - 示例:
javascript
const imageUrl = "https://leafletjs.com/examples/crs-simple/uqm_map_full.png";
const imageBounds = [
[-26.5, -25],
[102.5, 100],
]; // [southWest, northEast]
L.imageOverlay(imageUrl, imageBounds).addTo(map);配置项(Options)
| 选项名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
attribution | String | '' | 显示在地图右下角的版权信息。 |
opacity | Number | 1.0 | 图层透明度(0-1)。 |
zIndex | Number | 1 | 图层的 Z 轴顺序,值越大越靠上。 |
noWrap | Boolean | false | 如果为 true,地图不会在水平方向上重复。 |
bounds | LatLngBounds | null | 限制图层只在指定地理边界内显示。 |
WMS 瓦片图层 (TileLayer.WMS)
- 作用:通过 Web Map Service (WMS) 标准从服务器请求地图图像。
- 实例化:
L.tileLayer.wms(baseUrl, options?) - 示例:
javascript
L.tileLayer
.wms("http://ows.mundialis.de/services/service?", {
layers: "OSM-Overlay-WMS",
format: "image/png",
transparent: true,
attribution: "Mundialis WMS",
})
.addTo(map);配置项(Options)
| 选项名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
layers | String | '' | WMS 服务中要请求的图层名称(逗号分隔)。 |
styles | String | '' | WMS 服务中要请求的样式名称(逗号分隔)。 |
format | String | 'image/jpeg' | 请求的图像格式,如 'image/png', 'image/jpeg'。 |
transparent | Boolean | false | 如果为 true,请求透明背景的图像。 |
version | String | '1.1.1' | WMS 服务的版本。 |
crs | CRS | null | 用于请求 WMS 图像的坐标参考系统。如果为 null,则使用地图的 CRS。 |
uppercase | Boolean | false | 如果为 true,WMS 请求参数将转换为大写。 |
常用方法
TileLayer.WMS 继承了 TileLayer 的所有方法,并增加了以下特有方法:
| 方法名 | 返回值 | 说明 |
|---|---|---|
setParams(params, noRedraw?) | this | 更改 WMS 请求参数并重新加载瓦片。 |