底图切换须调用地图SDK图层管理能力,不可直接改CSS背景;百度、腾讯、高德、天地图及ArcGIS均需使用官方封装类,严格遵循坐标系转换、权限配置与版本兼容要求。

底图切换不是改CSS背景,而是调用地图SDK提供的图层管理能力。直接操作document.body.style.backgroundImage只能换静态图,无法联动缩放、拖拽、坐标系或标注点——这种做法在真实GIS场景下基本无效。
百度地图用BMap.SatelliteLayer切卫星图,别拼URL
百度不开放公开瓦片地址,所有合法调用必须走封装类。自己拼http://shandian.baidupcs.com/...会触发403,不是AK没开,是服务端校验Referer和签名。
-
AK必须在控制台同时开启「JavaScript API」和「静态图服务」权限,缺一不可 - v=1.0已停用,v=2.0/v=3.0才支持
BMap.SatelliteLayer - 切换时优先用
satelliteLayer.show()/satelliteLayer.hide(),别removeTileLayer再addTileLayer——后者容易导致图层状态错乱 - 初始化后卫星图不显示?检查是否漏了
map.enableScrollWheelZoom(true),某些安卓WebView下禁用滚轮会导致图层不重绘
腾讯地图手动加载卫星瓦片要处理坐标偏移
腾讯的瓦片URL看似开放:http://p1.map.gtimg.com/sateTiles/{zoom}/{x}/{y}/{x}_{y}.jpg,但它的x/y是墨卡托投影下的整数瓦片索引,不能直接传经纬度。
- 必须用
qq.maps.Map.getBounds()获取可视区域,再结合qq.maps.Map.getZoom()算出对应瓦片行列号 - 若你坐标是WGS84(如GPS原始数据),得先调
qq.maps.convertor.translate转GCJ-02,否则卫星图和标注点完全错位 - 瓦片域名有
p1~p4四组,建议随机选一个,避免单域名请求被限速
高德/天地图必须用官方图层类,自己new TileLayer必白屏
高德的AMap.TileLayer.Satellite和天地图的TMap.TileLayer.Satellite都已封装跨域、加密、投影适配逻辑。自己new AMap.TileLayer({urlTemplate: "..."})填入第三方URL,结果就是空白+控制台CORS错误。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
- 高德需显式声明插件:
plugin=AMap.TileLayer.Satellite,否则new AMap.TileLayer.Satellite()报undefined - 天地图v2.0叫
TMap.TileLayer.Satellite,v1.x叫TMap.Layer.Satellite,版本不匹配直接报错 - 两者均强制HTTPS,HTTP页面里加载会静默失败(Network面板都看不到请求)
ArcGIS用BasemapToggle最省事,但注意API版本差异
ArcGIS的BasemapToggle组件封装程度高,适合快速实现卫星/地形/街道图切换,但3.x和4.x初始化方式不同,混用会报错。
- 3.27版用
esri/dijit/BasemapToggle,构造时传map和basemap参数,再调startup() - 4.16版改用
esri/widgets/BasemapToggle,构造时传view和nextBasemap,且必须用view.ui.add()挂载到UI容器 - 想加更多底图选项?配合
BasemapGallery,它支持从ArcGIS Online拉取矢量/影像底图列表
真正难的不是“怎么切”,而是坐标系对齐和图层叠加顺序——比如在卫星图上画WGS84坐标点,却忘了腾讯/高德默认用GCJ-02,结果点永远飘在海面上。这类问题不会报错,只会静默错位。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










