要将网站接入百度地图,首先需要明确接入的目的和场景,例如展示位置信息、提供导航功能、标记兴趣点等,百度地图提供了多种接入方式,包括JavaScript API、Web服务API、小程序SDK等,其中JavaScript API是最常用的网站接入方式,支持丰富的地图展示和交互功能,以下是详细的接入步骤和注意事项:

准备工作
-
申请百度地图开放平台账号
访问百度地图开放平台官网(https://lbsyun.baidu.com/),注册并登录账号,如果是企业或开发者团队,建议使用企业账号以便管理应用和配额。 -
创建应用获取密钥(AK)
登录后,进入“控制台”→“应用管理”→“我的应用”,点击“创建应用”,选择应用类型为“浏览器端”,填写应用名称(如“公司官网地图”)并设置域名白名单,域名白名单需填写网站将要部署的域名(如www.example.com
),支持通配符(如*.example.com
),但出于安全考虑,建议精确填写,创建成功后,获取密钥(AK),这是调用百度地图API的唯一凭证。 -
了解API配额和计费规则
百度地图API提供免费额度和付费服务,免费额度包括每日调用量限制(如JavaScript API的免费额度为1万次/日),超出后需升级至付费版本,在控制台“服务管理”中可查看各服务的配额详情,根据需求选择是否升级。
接入百度地图JavaScript API
引入API文件
在网站的HTML文件中,通过<script>
标签引入百度地图JavaScript API,需替换YOUR_AK
为实际获取的密钥,基础引入代码如下:

<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_AK"></script>
v=3.0
表示API版本,建议使用最新版本以获得更好的兼容性和功能支持。- 可通过添加参数
callback=init
指定回调函数,确保API加载完成后执行初始化逻辑。
创建地图容器
在HTML中定义一个<div>
元素作为地图容器,并设置其宽度和高度(建议使用CSS设置具体像素值或百分比):
<div id="map" style="width: 100%; height: 500px;"></div>
初始化地图
通过JavaScript代码初始化地图,设置中心点坐标、缩放级别等参数,示例代码如下:
var map = new BMap.Map("map"); // 创建Map实例 var point = new BMap.Point(116.404, 39.915); // 创建点坐标(北京天安门) map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别 map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
BMap.Map
是地图核心类,centerAndZoom
用于设置地图中心点和缩放级别(缩放级别范围1-18,数值越大越详细)。- 可通过
map.setMapType(BMAP_NORMAL_MAP)
设置地图类型(普通地图、卫星图等)。
添加地图覆盖物
覆盖物是地图上的标记、信息窗口、叠加图层等元素,可丰富地图展示效果。
- 标记(Marker):用于标注位置,示例:
var marker = new BMap.Marker(point); // 创建标记 map.addOverlay(marker); // 添加到地图
- 信息窗口(InfoWindow):点击标记时弹出信息,示例:
var infoWindow = new BMap.InfoWindow("北京市东城区天安门广场"); // 创建信息窗口 marker.addEventListener("click", function(){ // 点击标记触发事件 map.openInfoWindow(infoWindow, point); // 打开信息窗口 });
- 圆(Circle)、折线(Polyline)等:可通过
new BMap.Circle()
、new BMap.Polyline()
等类创建,用于绘制区域或路线。
使用工具插件
百度地图JavaScript API提供多种工具插件,需在引入API时通过&plugins=
参数启用。

<script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_AK&plugins=markerclusterer,route"></script>
- MarkerClusterer(标记聚合):当大量标记重叠时,自动聚合显示,提升性能。
- Route(路线规划):支持驾车、公交、步行路线规划,示例:
var driving = new BMap.DrivingRoute(map, { renderOptions: {map: map, panel: "result"}, // 结果显示在地图和面板中 onSearchComplete: function(results){ if(driving.getStatus() === BMAP_STATUS_SUCCESS){ var plan = results.getPlan(0); console.log("距离:" + plan.getDistance() + ",时长:" + plan.getDuration()); } } }); driving.search("天安门", "故宫"); // 起点终点
- 其他插件如
Geolocation(定位)
、Control(控件)
等可根据需求选择。
高级功能与优化
-
响应式适配
通过CSS设置地图容器宽高为100%
,并结合媒体查询适配不同屏幕尺寸。#map { height: 400px; } @media (min-width: 768px) { #map { height: 500px; } }
-
异步加载API
为避免页面阻塞,可将API脚本放在<body>
底部,或使用async
属性异步加载:<script async defer type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=YOUR_AK"></script>
-
错误处理
捕获API加载或调用过程中的错误,BMap.OnLoad(function(){ console.log("API加载完成"); }); window.onerror = function(msg, url, line){ console.error("地图错误:" + msg); };
-
性能优化
- 避免频繁创建和销毁地图实例,复用已初始化的地图。
- 对大量标记使用聚合插件,或按需加载(如根据地图视野动态添加标记)。
- 减少不必要的API调用,例如缓存路线规划结果。
注意事项
-
域名白名单配置
确保API引入的域名与控制台中的白名单完全一致,否则无法正常加载,测试时需包含本地域名(如localhost
)。 -
API版本与兼容性
定期查看百度地图开放平台文档,了解API版本更新内容,及时升级以避免兼容性问题。 -
隐私与合规
若涉及用户定位功能,需明确告知用户并获取授权,符合《个人信息保护法》等法规要求。
相关问答FAQs
Q1: 为什么地图无法显示或提示“权限不足”?
A1: 首先检查AK是否正确,以及网站域名是否已添加到应用的白名单中,若使用本地测试,确保白名单包含localhost
;若为线上环境,需填写精确的域名(不含http://
或https://
),同时确认API调用是否超出免费额度,可通过控制台查看配额使用情况。
Q2: 如何实现根据用户当前位置显示地图?
A2: 使用百度地图的定位插件Geolocation
,示例代码如下:
var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() === BMAP_STATUS_SUCCESS){ var mk = new BMap.Marker(r.point); map.addOverlay(mk); map.panTo(r.point); alert("您的位置:" + r.point.lng + "," + r.point.lat); }else{ alert("定位失败:" + this.getStatus()); } },{enableHighAccuracy: true});
需注意,定位功能需用户授权,且在HTTPS环境下才能正常工作(本地localhost
除外)。