详解在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 相关文章推荐
JsDom 编程小结
Aug 09 Javascript
那些年,我还在学习jquery 学习笔记
Mar 05 Javascript
如何使用jQuery来处理图片坏链具体实现步骤
May 02 Javascript
详谈javascript中DOM的基本属性
Feb 26 Javascript
浅谈JavaScript中的string拥有方法的原因
Aug 28 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
Vue数据监听方法watch的使用
Mar 28 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
vue-cli3中vue.config.js配置教程详解
May 29 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
vue-cli3自动消除console.log()的调试信息方式
Oct 21 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
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
jquery实现动态画圆
2014/12/04 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
Python中列表、字典、元组、集合数据结构整理
2014/11/20 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
2014年煤矿安全工作总结
2014/12/04 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
收入证明怎么写
2015/06/12 职场文书
证婚人致辞精选
2015/07/28 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
浅谈MySQL函数
2021/10/05 MySQL