详解在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仿PS里的羽化效果代码
Dec 20 Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
js网页中的(运行代码)功能实现思路
Feb 04 Javascript
基于jQuery Ajax实现上传文件
Mar 24 Javascript
jquery.validate使用详解
Jun 02 Javascript
深入理解javascript函数参数与闭包
Dec 12 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 Javascript
JS实现的简单表单验证功能完整实例
Oct 14 Javascript
Vue.js中的computed工作原理
Mar 22 Javascript
Vue将页面导出为图片或者PDF
Aug 17 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
JavaScript 闭包的使用场景
Sep 17 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转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
深入php socket的讲解与实例分析
2013/06/13 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
PHP查询分页的实现代码
2017/06/09 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
nodejs个人博客开发第四步 数据模型
2017/04/12 NodeJs
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
说一说Python logging
2016/04/15 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
python多任务及返回值的处理方法
2019/01/22 Python
Python中常用的内置方法
2019/01/28 Python
Django 内置权限扩展案例详解
2019/03/04 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
利群广告词
2014/03/20 职场文书
元旦联欢会主持词
2014/03/26 职场文书
总经理任命书
2014/03/29 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
观看建国大业观后感
2015/06/01 职场文书
感谢师恩主题班会
2015/08/17 职场文书