首选高德、腾讯、leaflet三大js sdk方案;高德常见问题为key无效、容器无高度、未等sdk加载;腾讯需注意经纬度顺序相反及正确加载监听;leaflet用osm需纠偏或换底图,且防429限速。

直接用 <iframe></iframe> 嵌入最省事,但只能静态展示;真要交互、标记、定位、路线规划,必须走 JS SDK 路线——高德、腾讯、Leaflet 是目前在国内能稳定跑通的三个主力方案。
高德地图 SDK 初始化失败的常见原因
报错 AMap is not defined 或地图空白,八成是这三个环节出了问题:
-
<script src="https://webapi.amap.com/maps?v=2.0&key=%E4%BD%A0%E7%9A%84Key"></script>没加v=2.0或 Key 无效(检查控制台 Network 标签页是否返回 403) - 地图容器
<div id="map"></div>的父级没设高度,或 CSS 写成height: auto—— 必须是具体值,比如height: 400px或height: 100vh - 执行
new AMap.Map(...)时 SDK 还没加载完,没包在AMap.ready(() => { ... })里,也没放在底部
腾讯地图经纬度顺序和加载时机陷阱
腾讯地图的 qq.maps.LatLng 构造函数参数顺序是 [lat, lng],和高德/百度的 [lng, lat] 相反,写反了地图中心就偏到西伯利亚。
更隐蔽的问题是加载监听:不能等 window.onload,也不能靠 setTimeout,必须用官方推荐方式:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
qq.maps.event.addListenerOnce(qq.maps, 'loaded', () => {
const map = new qq.maps.Map(document.getElementById('map'), {
center: new qq.maps.LatLng(39.90923, 116.397428),
zoom: 13
});
});
否则本地开发时偶尔能显示,上线后必白屏。
Leaflet + OpenStreetMap 的坐标偏移与请求限制
Leaflet 本身不纠偏,直接用 OSM 瓦片在中国大陆会整体偏移 300–500 米——这不是代码 bug,是 GCJ-02 坐标系强制加密导致的。解决办法只有两个:
- 换底图源:用高德或腾讯提供的瓦片 URL(需带合法 Key),例如:
https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z} - 加纠偏库:引入
gcoord或proj4js手动转换 WGS84 → GCJ-02,再传给L.marker([lat, lng])
另外注意:OSM 免费瓦片服务默认限速 1 请求/秒,页面上同时加载 5 个标记点 + 1 个路径,很容易触发 429 错误——别在开发时只测单点,压测时得模拟多点并发。
真正难的不是“怎么写出来”,而是判断该用哪个方案:如果用户全在国内、要对接微信分享或 POI 搜索,高德或腾讯绕不开;如果项目要出海、或者你得自己托管瓦片、叠加 GeoJSON,Leaflet 是唯一合理选择。选错方案,后期改起来比重写还疼。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










