百度地图Api(防踩坑记录)


(做一个认真仔细的人)

陆陆续续连轴转着忙着两个项目。今天终于有空写写随笔了,话不多说,开始。

当初用到百度地图api的时候遇到了很多问题(1. 刷新页面地图消失。2. Bmap is undefined。)

这样的方式可以百度地图api引入的解决一系列问题

百度地图官网介绍,仅提供2种方法的引入

  1. script引入方式

  2. 异步加载方式

创建一个js文件,写入以下代码进行异步加载方式,然后在需要用到的组件里直接引入就可以,以下有步骤方法。(使用异步加载方式就不需要再indx.html里面再引入了)

export function MP() {
  // console.log("初始化百度地图脚本...");
  const AK = "Ak秘钥";
  const BMap_URL = "https://api.map.baidu.com/api?v=2.0&ak="+ AK +"&s=1&callback=onBMapCallback";
  return new Promise((resolve, reject) => {
  // 如果已加载直接返回
    if(typeof BMap !== "undefined") {
    resolve(BMap);
    return true;
    }
    // 百度地图异步加载回调处理
    window.onBMapCallback = function () {
    console.log("百度地图脚本初始化成功...");
    resolve(BMap);
    };
    // 插入script脚本
    let scriptNode = document.createElement("script");
    scriptNode.setAttribute("type", "text/javascript");
    scriptNode.setAttribute("src", BMap_URL);
    document.body.appendChild(scriptNode);
  });
}

 在需要使用的vue组件中引入

import { MP } from "../assets/map";

HTML

<div id="map" style="width: 100%; height: 477px">div>

methods函数

InfoMap(){
 MP().then(() => {
  //创建map实例
  const map = new BMap.Map("map"))    
 }
}

这样就完美的解决了百度map引入的一系列问题了