详解在HTTPS 项目中使用百度地图 API


Posted in Javascript onApril 26, 2019

百度地图 API 产品简介

百度地图 JavaScript API 是一套由 JavaScript 语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持 PC 端和移动端基于浏览器的地图应用开发,且支持 HTML5 特性的地图开发。
百度地图 JavaScript API 支持 HTTP 和 HTTPS,免费对外开放,可直接使用。接口使用无次数限制。在使用前,您需先申请密钥(ak)才可使用。

基础使用

引用百度地图 API, 将 “您的密匙” 替换为你在百度地图申请的 AK, 即可使用。

<script
 type="text/javascript"
 src="http://api.map.baidu.com/api?v=3.0&ak=您的密钥"
></script>

更多问题

问题1. https项目
在 https 项目中通过http导入会出现以下问题:

详解在HTTPS 项目中使用百度地图 API

那么百度地图的 JavaScript API 是否支持 HTTPS 请求呢?
答案是当然的。

JavaScript API V2.0 及以上版本支持 HTTPS。
如果想使用 HTTPS 协议调用 JavaScript API,直接将脚本引用的协议修改为 HTTPS 即可。

<script
 type="text/javascript"
 src="https://api.map.baidu.com/api?v=2.0&ak=您的密钥"
></script>
<script
 type="text/javascript"
 src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥"
></script>

以上是官方文档介绍的用法,在用搜索引擎查找问题解决方案时,看到前辈们的技术博客都说使用 <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥"></script> 不能达到预期效果,必须添加参数 &s=1 才可以。
不知道是不是官方进行过优化,下面两张图是今日实测的结果:

详解在HTTPS 项目中使用百度地图 API

详解在HTTPS 项目中使用百度地图 API

可以看到添加 &s=1 后所得到的结果与没添加时是__一致的__。
问题2. 浏览器警告
在部分浏览器(如谷歌)中会产生警告如下:

详解在HTTPS 项目中使用百度地图 API

A parser-blocking, cross site (i.e. different eTLD+1) script, 
 https://api.map.baidu.com/getscript?v=3.0&ak='您的密钥'&services=&t=20190301102433,
 is invoked via document.write. 
 The network request for this script MAY be blocked by the browser in this or 
 a future page load due to poor network connectivity. 
 If blocked in this page load, it will be confirmed in a subsequent console message. 
 See https://www.chromestatus.com/feature/5718547946799104 for more details.

这段警告的大概意思是说一个阻塞性的解析器,跨站点的脚本,通过document.write调用。此脚本的网络请求可能由于网络连接不良而被浏览器在此页面加载或将来的页面加载中阻止。如果在此页面加载中被阻止,将在随后的控制台消息中确认。更多详情参见

那么我们来分析一下百度地图API导入得到的JavaScript的代码

(function() {
  window.BMAP_PROTOCOL = "https"; // https导入会有此行代码
  window.BMap_loadScriptTime = new Date().getTime();
  document.write(
  `<script 
    type="text/javascript" 
    src="https://api.map.baidu.com/getscript?v=3.0&ak='您的密钥'&services=&t=20190301102433"
   > </script>`
  );
 })();

可以得知正是这段代码中的 document.write 引发的警告。那么我们在HTML文件中直接使用 <script type="text/javascript" src="https://api.map.baidu.com/getscript?v=3.0&ak='您的密钥'&services=&t=20190301102433"> </script> 导入百度地图的API就可以避免此警告。不过这样导入时,缺失的另外两行 window.BMAP_PROTOCOL = "https"window.BMap_loadScriptTime = (new Date).getTime() 一定要记得添加到项目中,避免产生其他问题。

以上所述是小编给大家介绍的在HTTPS 项目中使用百度地图 API详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 精粹读书笔记(1,2)
Feb 07 Javascript
javascript时间自动刷新实现原理与步骤
Jan 06 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
Jun 21 Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 Javascript
使用canvas实现仿新浪微博头像截取上传功能
Sep 02 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
Jan 17 Javascript
原生js编写2048小游戏
Mar 17 Javascript
AngularJS之自定义服务详解(factory、service、provider)
Apr 14 Javascript
JS实现简单获取最近7天和最近3天日期的方法
Apr 18 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
js判断在哪个浏览器打开项目的方法
Jan 21 Javascript
JavaScript中交换值的10种方法总结
Aug 18 Javascript
vue操作动画的记录animate.css实例代码
Apr 26 #Javascript
JS原生瀑布流效果实现
Apr 26 #Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
Apr 26 #Javascript
详解auto-vue-file:一个自动创建vue组件的包
Apr 26 #Javascript
vue组件间的参数传递实例详解
Apr 26 #Javascript
详解VUE前端按钮权限控制
Apr 26 #Javascript
微信小程序开发之点击按钮退出小程序的实现方法
Apr 26 #Javascript
You might like
写一个用户在线显示的程序
2006/10/09 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
Jquery公告滚动+AJAX后台得到数据
2011/04/14 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
javascript实现鼠标点击页面 移动DIV
2016/12/02 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
美国环保妈妈、儿童和婴儿用品购物网站:The Tot
2019/11/24 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
祖国在我心中的演讲稿
2014/05/04 职场文书
考博专家推荐信
2014/05/10 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
面试复试通知单
2015/04/24 职场文书
项目投资意向书范本
2015/05/09 职场文书
永远是春天观后感
2015/06/12 职场文书
python绘制箱型图
2021/04/27 Python