Skip to content

TileLayer

TileLayer是用于显示瓦片地图服务(如 Google Maps、OSM、高德等)的基类图层,继承自 Layer。它把瓦片URL模板、子域名、空间参考、瓦片尺寸、偏移、重复世界、缓存与加载动画等能力封装为配置项与一组计算/控制方法。

js
import { Map, TileLayer } from "maptalks";

const map = new Map("map", { center: [0, 0], zoom: 2 });
const layer = new TileLayer("base", {
  urlTemplate: "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
  subdomains: ["a", "b", "c", "d"],
}).addTo(map);

构造函数

js
new TileLayer(id, options)

参数:

  • id String 图层id。
  • options Object 图层配置项(可选)。

options 配置项

瓦片特有

配置名类型描述默认值
urlTemplateString|FunctionURL模板,支持{x}{y}{z}{s}占位符;也可传函数(x,y,z,domain)=>urlnull
subdomainsString[]替换{s}的子域名数组null
spatialReferenceObject瓦片图层空间参考,缺省继承地图null
tileSizeNumber|[n,n]瓦片图片尺寸[256, 256]
offsetNumber[]|Function瓦片整体偏移[0,0]
tileSystem[sx,sy,ox,oy]|String瓦片系统或预设名null
maxAvailableZoomNumber瓦片可用最大zoom,地图放大超过时复用该级null
repeatWorldBoolean是否在世界外重复加载瓦片true
backgroundBoolean交互后是否绘制背景true
fadeAnimationBoolean瓦片淡入动画true
fadeDurationNumber淡入时长(ms)167
crossOriginString瓦片图片crossOrigin属性null
errorUrlString加载失败时替换的图片null
tokenString替换{token}的令牌null
customTagsObject模板中自定义标签值null
maxCacheSizeNumber缓存的最大瓦片数256
zoomOffsetNumber地图与瓦片zoom之间偏移0
cascadeTilesBoolean绘制不同zoom的级联瓦片true
rendererString渲染器类型(gl/canvas)webgl?'gl':'canvas'
debugBoolean瓦片带边框和坐标标题false

继承自 Layer

attributionminZoommaxZoomvisibleopacityzIndexhitDetect 等通用配置项见 Layer

成员方法

瓦片URL与尺寸

  • getTileUrl(x, y, z): string — 获取瓦片(x,y,z)的URL(支持函数式或模板替换,注入token/customTags/subdomains)
  • getTileSize(id?): Size — 获取瓦片尺寸

瓦片计算

  • getTiles(z, parentLayer): TilesType — 获取zoom级别的瓦片描述集合
  • getTileId(x, y, zoom, id): string — 获取瓦片唯一id

缩放与空间参考

  • getSpatialReference(): SpatialReference — 获取瓦片空间参考
  • getMinZoom(): number / getMaxZoom(): number — 获取最小/最大缩放
  • getMaxAvailableZoom(): number — 获取最大可用缩放

图层控制

  • forceReload(): this — 强制重载图层
  • clear(): this — 清空图层
  • toJSON(): Object — 导出图层JSON

静态方法

  • TileLayer.fromJSON(layerJSON): TileLayer | null — 从JSON还原图层

事件

事件触发时机
tileload瓦片加载成功
tileerror瓦片加载出错
tiledelete瓦片被删除
forcereloadstart / forcereloadend强制重载开始/结束
clear清空图层

图层通用事件(idchangesetopacityshow/hidelayerloadadd/remove 等)见 Layer

TileSystem

TileSystem 是瓦片系统描述工具类,描述瓦片X/Y轴索引方向与世界投影坐标系原点。可通过 options.tileSystem 传入内置预设名或 [sx, sy, ox, oy] 四元数组。

内置预设:

常量名含义
web-mercatorWeb Mercator(google/bing/高德)
tms-global-mercatorTMS / mapbox mbtiles(EPSG:3857)
global-geodeticEPSG:4326 全球地理网格
tms-global-geodeticTMS / OSGEO(EPSG:4326)
baidu百度地图
js
map.on("zoomend", () => {});
layer.on("tileload", (e) => {
  console.log("tile loaded", e.tileInfo);
});