第2节 | 引入地图 SDK(高德/百度/腾讯/Google Maps) 🧰
🎯 学习目标
老曹说:“别光看热闹,动手试试才是王道!今天教你如何‘召唤’地图神兽。”
🧠 引言:地图 SDK 是啥玩意儿?
简单来说,地图 SDK 就是一套封装好的 JavaScript 库,帮你搞定地图渲染、交互、数据加载等一系列复杂操作。你可以把它想象成一个“地图遥控器”,只要按下几个按钮,就能让地图乖乖听话。
老曹吐槽时间:
“有些同学问我能不能自己写个地图引擎?当然可以啊,只要你不怕头发掉光、肝爆熬夜……还是用现成的吧,别头铁。”
🌐 一、四大主流地图 SDK 引入方式详解
1.1 高德地图(AMap)📦
✅ CDN 引入(最快上手)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<title>高德地图 Demo</title>
<!– 引入高德地图 JS API –>
<script src="https://webapi.amap.com/maps?v=2.0&key=你的KEY"></script>
</head>
<body>
<div id="map-container" style="width: 100%; height: 500px;"></div>
<script>
// 初始化地图
const map = new AMap.Map('map-container', {
center: [116.397428, 39.90923], // 中心点坐标(天安门)
zoom: 12, // 缩放级别
viewMode: '2D' // 显示模式
});
</script>
</body>
</html>
✅ NPM 安装(推荐用于工程化项目)
npm install @amap/amap-jsapi-loader –save
import AMapLoader from '@amap/amap-jsapi-loader';
AMapLoader.load({
key: '你的KEY',
version: '2.0',
plugins: ['AMap.Scale', 'AMap.ToolBar']
}).then((AMap) => {
const map = new AMap.Map('map-container', {
center: [116.397428, 39.90923],
zoom: 12
});
}).catch(e => console.error(e));
1.2 百度地图(Baidu Map)📦
✅ CDN 引入
<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=你的AK"></script>
<div id="baidu-map" style="width: 100%; height: 500px;"></div>
<script>
const map = new BMap.Map('baidu-map');
const point = new BMap.Point(116.404, 39.915); // 注意:百度使用 Point 对象
map.centerAndZoom(point, 15);
map.enableScrollWheelZoom(true); // 启用滚轮缩放
</script>
✅ NPM 安装
npm install baidumap-web-api –save
import { BMap } from 'baidumap-web-api';
const map = new BMap.Map('baidu-map');
map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);
1.3 腾讯地图(Tencent Map)📦
✅ CDN 引入
<script src="https://map.qq.com/api/js?v=2.exp&key=你的KEY"></script>
<div id="tencent-map" style="width: 100%; height: 500px;"></div>
<script>
const map = new qq.maps.Map(document.getElementById('tencent-map'), {
center: new qq.maps.LatLng(39.916527, 116.397128),
zoom: 12
});
</script>
1.4 Google Maps(海外首选)📦
✅ CDN 引入
<script async defer src="https://maps.googleapis.com/maps/api/js?key=你的API_KEY&callback=initMap"></script>
<div id="google-map" style="width: 100%; height: 500px;"></div>
<script>
function initMap() {
const map = new google.maps.Map(document.getElementById('google-map'), {
center: { lat: 39.9042, lng: 116.4074 },
zoom: 12
});
}
</script>
🧱 二、地图容器初始化核心参数解析
2.1 必填项:center & zoom
| center | Array / Object / LatLng | [116.397428, 39.90923] | 地图中心点坐标 |
| zoom | Number | 12 | 缩放级别(通常 1~20) |
📌 注意事项:
- 不同地图 SDK 的坐标顺序可能不同:
- 高德、Google:[经度, 纬度]
- 百度:new BMap.Point(经度, 纬度)
- 腾讯:new qq.maps.LatLng(纬度, 经度)
2.2 可选项一览表
| viewMode | '2D' | 显示模式(2D / 3D) |
| pitch | 0 | 俯仰角(仅 3D 模式有效) |
| rotation | 0 | 旋转角度 |
| mapStyle | 'normal' | 地图样式(标准 / 卫星 / 夜间等) |
| dragEnable | true | 是否允许拖拽 |
| zoomEnable | true | 是否允许缩放 |
🔧 三、初始化代码模板(一键复制)
<!– 通用 HTML 结构 –>
<div id="my-map" style="width: 100vw; height: 100vh;"></div>
<!– 高德地图 –>
<script src="https://webapi.amap.com/maps?v=2.0&key=YOUR_KEY"></script>
<script>
const map = new AMap.Map('my-map', {
center: [116.397428, 39.90923],
zoom: 12,
viewMode: '2D'
});
</script>
<!– 百度地图 –>
<script src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_AK"></script>
<script>
const map = new BMap.Map('my-map');
map.centerAndZoom(new BMap.Point(116.404, 39.915), 12);
</script>
<!– 腾讯地图 –>
<script src="https://map.qq.com/api/js?v=2.exp&key=YOUR_KEY"></script>
<script>
const map = new qq.maps.Map(document.getElementById('my-map'), {
center: new qq.maps.LatLng(39.916527, 116.397128),
zoom: 12
});
</script>
<!– Google Maps –>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>
<script>
function initMap() {
const map = new google.maps.Map(document.getElementById('my-map'), {
center: { lat: 39.9042, lng: 116.4074 },
zoom: 12
});
}
</script>
🔄 四、多平台统一接口封装(进阶技巧)
老曹灵魂拷问:“每个地图 SDK 都要写一套代码?太麻烦了吧!封装一下不香吗?”
4.1 封装思路(工厂模式)
class UniversalMap {
constructor(type, containerId, options) {
this.type = type;
this.container = document.getElementById(containerId);
this.options = options;
switch (type) {
case 'amap':
this.initAMap();
break;
case 'baidu':
this.initBaidu();
break;
case 'tencent':
this.initTencent();
break;
case 'google':
this.initGoogle();
break;
default:
throw new Error('Unsupported map type');
}
}
initAMap() {
this.map = new AMap.Map(this.container, {
center: this.options.center || [116.397428, 39.90923],
zoom: this.options.zoom || 12
});
}
initBaidu() {
this.map = new BMap.Map(this.container);
this.map.centerAndZoom(
new BMap.Point(…this.options.center),
this.options.zoom || 12
);
}
initTencent() {
this.map = new qq.maps.Map(this.container, {
center: new qq.maps.LatLng(…this.options.center),
zoom: this.options.zoom || 12
});
}
initGoogle() {
this.map = new google.maps.Map(this.container, {
center: { lat: this.options.center[1], lng: this.options.center[0] },
zoom: this.options.zoom || 12
});
}
// 统一方法:添加标记点
addMarker(position) {
switch (this.type) {
case 'amap':
new AMap.Marker({ position, map: this.map });
break;
case 'baidu':
new BMap.Marker(new BMap.Point(…position)).addTo(this.map);
break;
case 'tencent':
new qq.maps.Marker({ position: new qq.maps.LatLng(…position), map: this.map });
break;
case 'google':
new google.maps.Marker({
position: { lat: position[1], lng: position[0] },
map: this.map
});
break;
}
}
}
// 使用示例
const myMap = new UniversalMap('amap', 'my-map', {
center: [116.397428, 39.90923],
zoom: 12
});
myMap.addMarker([116.397428, 39.90923]);
🧪 五、高频面试题 & 答案解析
| Q1 | 地图容器必须设置宽高吗? | 是的,否则地图无法渲染(默认宽高为 0) |
| Q2 | 为什么有时地图加载空白? | 密钥错误、网络拦截、容器未挂载完成 |
| Q3 | 如何动态改变地图中心点? | 调用 setCenter() 方法 |
| Q4 | 缩放级别的取值范围是多少? | 通常为 1~20,具体取决于地图服务商 |
| Q5 | NPM 方式和 CDN 方式的优劣对比? | NPM 更利于工程化管理;CDN 加载更快但依赖外部资源 |
| Q6 | 多个地图实例能否共存于同一页面? | 可以,但需注意性能消耗 |
| Q7 | 如何监听页面加载完成事件? | 监听 complete 或 tilesloaded 事件 |
| Q8 | 地图密钥泄露怎么办? | 立即在后台禁用旧密钥并申请新密钥 |
| Q9 | 什么是懒加载地图? | 页面滚动到可视区域时才初始化地图,提升首屏速度 |
| Q10 | 地图 SDK 版本升级需要注意什么? | 查阅官方迁移指南,兼容性调整 |
📊 六、章节知识点总结表格
| 引入方式 | CDN、NPM、ES Module | 必须掌握 ✅ |
| 初始化参数 | center、zoom、viewMode | 必须掌握 ✅ |
| 统一封装 | 工厂模式、适配器模式 | 理解原理即可 📘 |
| 面试考点 | 容器宽高、懒加载、版本升级 | 必背清单 📝 |
🧠 七、思维导图回顾
#mermaid-svg-7kLFqbeFNgG3yu1j{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7kLFqbeFNgG3yu1j .error-icon{fill:#552222;}#mermaid-svg-7kLFqbeFNgG3yu1j .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7kLFqbeFNgG3yu1j .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7kLFqbeFNgG3yu1j .marker.cross{stroke:#333333;}#mermaid-svg-7kLFqbeFNgG3yu1j svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7kLFqbeFNgG3yu1j p{margin:0;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge{stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 text{fill:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon–1{font-size:40px;color:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge–1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth–1{stroke-width:17;}#mermaid-svg-7kLFqbeFNgG3yu1j .section–1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-0{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-0{stroke-width:14;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-1{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-1{stroke-width:11;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 text{fill:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-2{stroke-width:8;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-3{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-3{stroke-width:5;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-4{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-4{stroke-width:2;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-5{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-5{stroke-width:-1;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-6{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-6{stroke-width:-4;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-7{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-7{stroke-width:-7;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-8{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-8{stroke-width:-10;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-9{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-9{stroke-width:-13;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 polygon,#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 text{fill:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .node-icon-10{font-size:40px;color:black;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .edge-depth-10{stroke-width:-16;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled circle,#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:lightgray;}#mermaid-svg-7kLFqbeFNgG3yu1j .disabled text{fill:#efefef;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-root rect,#mermaid-svg-7kLFqbeFNgG3yu1j .section-root path,#mermaid-svg-7kLFqbeFNgG3yu1j .section-root circle,#mermaid-svg-7kLFqbeFNgG3yu1j .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-7kLFqbeFNgG3yu1j .section-root text{fill:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-root span{color:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .section-2 span{color:#ffffff;}#mermaid-svg-7kLFqbeFNgG3yu1j .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-7kLFqbeFNgG3yu1j .edge{fill:none;}#mermaid-svg-7kLFqbeFNgG3yu1j .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-7kLFqbeFNgG3yu1j :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
引入地图SDK
引入方式
CDN
NPM
ES Module
初始化参数
center
zoom
viewMode
多平台封装
工厂模式
统一接口
常见问题
容器宽高
密钥错误
懒加载优化
🎉 结语:地图 SDK 已成功“召唤”!
老曹寄语:“恭喜你迈出第二步!接下来我们就要开始玩花活了——给地图加点料!”
下一节课我们将深入探讨地图的基本操作控制,让你的地图不再只是静态摆设!
📌 作业布置:
分别用四种 SDK 初始化一个地图,并添加一个标记点到当前位置。
👉 提交方式:评论区打卡 or 私聊老曹领取反馈哦~
