广告位联系
返回顶部
分享到

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

JavaScript 来源:互联网搜集 作者:秩名 发布时间:2019-04-27 10:00:02 人浏览
摘要

本篇文章介绍在HTTPS 项目中使用百度地图 API的方法。 百度地图 API 产品简介 百度地图 JavaScript API 是一套由 JavaScript 语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持 PC 端和移动端基于浏览器的地图应用开发,且支

本篇文章介绍在HTTPS 项目中使用百度地图 API的方法。

百度地图 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导入会出现以下问题:



那么百度地图的 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 才可以。

不知道是不是官方进行过优化,下面两张图是今日实测的结果:




可以看到添加 &s=1 后所得到的结果与没添加时是__一致的__。

问题2. 浏览器警告

在部分浏览器(如谷歌)中会产生警告如下:



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() 一定要记得添加到项目中,避免产生其他问题。



版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/weixin_41632399/article/details/89156702
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计