在 HTTPS 项目中使用百度地图 API
<scripttype="text/javascript"src="https://api.map.baidu.com/api?v=2.0&ak=您的密钥"
>script>
<scripttype="text/javascript"src="https://api.map.baidu.com/api?v=3.0&ak=您的密钥"
>script>
以上是官方文档介绍的用法,在用搜索引擎查找问题解决方案时,看到前辈们的技术博客都说使用 不能达到预期效果,必须添加参数 &s=1 才可以。
不知道是不是官方进行过优化,下面两张图是今日实测的结果:
可以看到添加 &s=1 后所得到的结果与没添加时是__一致的__。
在部分浏览器(如谷歌)中会产生警告如下:
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.
这段警告的大概意思是说一个阻塞性的解析器,跨站点的脚本,通过.write调用。此脚本的网络请求可能由于网络连接不良而被浏览器在此页面加载或将来的页面加载中阻止。如果在此页面加载中被阻止,将在随后的控制台消息中确认。更多详情参见
那么我们来分析一下百度地图API导入得到的的代码
(function() {window.BMAP_PROTOCOL = "https"; // https导入会有此行代码window.BMap_loadScriptTime = new Date().getTime();document.write(``);})();
可以得知正是这段代码中的 .write 引发的警告。那么我们在HTML文件中直接使用 导入百度地图的API就可以避免此警告。不过这样导入时,缺失的另外两行 . = "https" 与 . = (new Date).() 一定要记得添加到项目中,避免产生其他问题。