经纬志
首页 / 实战手册 / 服务接入

接入天地图、高德、腾讯底图要改哪些地方

先看结论

从 OpenStreetMap 换成国内底图,不只是把 URL 换掉。坐标系、Key、协议、配额四处都要动。

最后验证 2026-11-03 · 多技术栈 · 更新 2026-10-27 · 引用本文

一张表看清差异

项目天地图高德腾讯
需要 Key需要,免费申请需要,个人有免费额度需要,个人有免费额度
坐标系CGCS2000(与 WGS84 近似)GCJ-02GCJ-02
业务数据是否要转不需要需要 WGS84 → GCJ-02需要 WGS84 → GCJ-02
协议HTTP / HTTPS 均可建议 HTTPS建议 HTTPS
主要限制配额按账号级别配额按 Key,超额需付费配额按 Key,超额需付费

天地图

国家级服务,免费但要注册并实名认证。瓦片按 {z}/{x}/{y} 组织, 和 Leaflet 默认规则一致,不需要翻转 y 轴。

L.tileLayer(
  'https://t{s}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile' +
  '&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w' +
  '&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=你的KEY',
  { subdomains: '01234567', maxZoom: 18 }
).addTo(map);

天地图是 WMTS 接口而不是简单的 {z}/{x}/{y}.png, 参数顺序容易写错。把整条 URL 先贴到浏览器单独打开,能出图再放进代码。 影像图层把 vec 换成 img,注记图层是 cva / cia, 通常影像和注记两层要一起加。

高德

瓦片是标准 Web 墨卡托编号,但坐标系是 GCJ-02。 这意味着:底图接上去没问题,业务数据必须转换,否则整体偏移。

L.tileLayer(
  'https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1' +
  '&scale=1&style=8&x={x}&y={y}&z={z}',
  { subdomains: '1234', maxZoom: 18 }
).addTo(map);

style=8 是标准街道图,style=6 是影像图。 这类瓦片地址属于前端直连方式,不经过 Key 校验,但也不承诺稳定性, 生产项目建议走官方 JS API 或 Web 服务接口。

腾讯

规则与高德接近,同样是 GCJ-02,同样按 {z}/{x}/{y} 编号。 换底图时只需要改 URL 和 subdomains。

转换坐标的时机

用高德或腾讯时,业务数据在进入地图前转换一次即可。 不要在渲染循环里反复转,也不要在数据入库时就转好——原始数据应该保留 WGS84, 转换放在「要显示」这一步。

function toDisplay(lng, lat, usesGcj) {
  if (!usesGcj) return [lng, lat];
  var g = wgs84ToGcj02(lng, lat);
  return [g[0], g[1]];
}

这样同一份数据可以在天地图上直接显示,在高德上转换后显示,不用存两份。

常见坑

现象原因
瓦片全灰Key 未通过或不匹配当前域名
出图但拼接错位y 轴规则不同,TMS 需要翻转
层数最高只有几级maxZoom 没有跟上服务上限
本地正常线上 403Key 的白名单里没有线上域名
底图正常数据偏移GCJ-02 未转换

合规提醒

国内地图服务的服务条款对使用方式有约束,商用前要按官方文档确认授权范围。 只做坐标换算与展示不涉及测绘活动;如果要做坐标数据的采集、存储和传输, 需要另行确认资质要求。

引用本文

经纬志(2026)。《接入天地图、高德、腾讯底图要改哪些地方》。https://www.jingweizhi.com/cookbook/domestic-basemap.html(访问日期 2026-11-03)。