
百度地图异步加载实现
一、创建
二、在 Vue 中调用
发布日期:2021-05-14 14:37:42
浏览次数:17
分类:精选文章
本文共 1549 字,大约阅读时间需要 5 分钟。
百度地图异步加载实现方案
在使用百度地图API时,经常会遇到一个问题:JS文件加载不完全,导致调用百度API时出现undefined错误。为了解决这个问题,我们可以通过异步加载的方式来实现地图API的初始化。这将确保地图脚本完全加载后再调用API,从而避免运行时错误。
以下是实现方案的详细代码和注意事项:
一、创建 map.js
文件
export function loadBMap(ak) { return new Promise((resolve, reject) => { // 检查是否已经加载了百度地图相关脚本 if (typeof window.BMapGL !== 'undefined') { resolve(window.BMapGL); return true; } // 注册百度地图异步加载的回调处理 window.onBMapCallback = function() { console.log('百度地图脚本初始化成功...'); resolve(window.BMapGL); }; // 创建并加载百度地图脚本 const script = document.createElement('script'); script.type = 'text/javascript'; script.src = `http://api.map.baidu.com/api?type=webgl&v=1.0&ak=${ak}&s=1&callback=onBMapCallback`; script.onerror = reject; // 如果加载失败,触发错误处理 document.documentElement.appendChild(script); });}
二、在 Vue 中调用 map.js
代码解释
map.js
中的 loadBMap
函数
- 这是一个
Promise
实现的异步加载函数,返回一个BMapGL
实例。 - 如果
BMapGL
已经加载,则直接返回当前实例。 - 否则,创建一个
script
标签,通过指定的参数从百度API加载地图脚本,并设置回调处理。
Vue 组件中使用地图
- 在
mounted
生命周期钩子中,自定义异步加载地图的逻辑。 - 通过
loadBMap
函数获取地图实例,并初始化地图中心位置和缩放级别。 - 创建地址解析器,通过输入地址获取地理坐标,设置地图中心点并缩放。
- 配置地图缩放和比例尺、缩放、城市列表等控件。
注意事项
-
API 密钥 (
replacingak
) 必须正确配置xxxxx
with your actual API key. FOR the millionth time: DO NOT SHARE YOUR API KEY. -
地图初始化位置
修改getPoint
方法中的地点参数或调用centerAndZoom
方法,根据实际需求调整地图初始位置和缩放级别. -
路径优化
在生产环境中,建议将script.src
进行路径优化,并考虑使用 CDN 提供地图脚本,以提高加载速度. -
回调错误处理
如果地图加载失败,可以通过script.onerror
设置回调函数进行处理,返回相应的错误信息.
这个方案通过异步加载的方式解决了百度地图脚本未加载的问题,确保在地图调用时所有脚本都准备就绪。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月11日 16时51分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
《朝花夕拾》金句摘抄(六)
2019-03-11
《金色梦乡》金句摘抄(六)
2019-03-11
Boostrap技能点整理之【网格系统】
2019-03-11
新闻发布项目——业务逻辑层(UserService)
2019-03-11
hibernate正向生成数据库表以及配置——hibernate.cfg.xml
2019-03-11
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
2019-03-11
java实现人脸识别源码【含测试效果图】——Dao层(IUserDao)
2019-03-11
使用ueditor实现多图片上传案例——前台数据层(Index.jsp)
2019-03-11
ssm(Spring+Spring mvc+mybatis)——saveDept.jsp
2019-03-11
JavaScript操作BOM对象
2019-03-11
layui二级联动
2019-03-11
SpringCloud分布式服务-我的理解
2019-03-11
解决Chrome播放视频闪屏黑屏无法播放
2019-03-11
Java中final的理解
2019-03-11
Git简单理解与使用
2019-03-11
echarts 基本图表开发小结
2019-03-11