好客租房之Map百度地图api踩坑

518 阅读1分钟

使用百度地图api,频频出错,我就纳闷了怎么我是跟着官方文档的怎么就是实现不了了呢。然后经过一番查询和试验,终于解决了(还是很纳闷,为啥特殊的又我遇到了!)

一开始是在index.html引入script出现的问题,按照官方文档的引入

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

但是此时我的浏览器冒出个警告

api?v=3.0&ak='###'2:1 A parser-blocking, cross site (i.e. different eTLD+1) script, https://api.map.baidu.com/getscript?v=2.0&ak=MqgPRehwsDncQGZrRLg6OojcU8oSOYR2&services=&t=20210113094335, 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?v=3改成getscript即可。

但是这只是第一坑,第二个坑是使用BMap。 根据文档只需使用 var map = new BMap.Map("container"); 但此时我的控制台又报错了Map undefined,百度一下,发现需要在前面加个window就可以了,事情没那么简单,还是报Map undefined。这让我百思不得其解,最后在控制台打印了一下window,发现window没有BMap,但是有BMapGl。

屏幕截图 2023-07-10 001228.png

我立即将BMap改为BmapGL这一改,就ok了。

效果图:

屏幕截图 2023-07-09 234726.png

总结:

  1. 如果控制台报警告A parser-blocking,那可能是引入api的问题,将api修改为getscript
  2. 如何一直报BMap undefined,那么可能需要将BMap换成BMapGL