• vue项目 调用百度地图 BMap is not defined


    这次老板新接了一个四点半官网页面,使用vue来写。emm……我感觉整个人都不好了,两天半解决了20个静态页面。还好vue写页面简直飞快,遇到一个vue的新坑,使用百度地图。

    研究了好一会,总是报错BMap is not defined

    我只有一个页面需要用到地图,所以我是使用cdn引入的方式来写的,并没有像网上一些教程一样使用npm引入安装。

    直接简单粗暴的根据百度地图api来写,虽然报错。那就解决报错的bug就行了。好了,下面开始说说步骤

    在需要页面的处引入cdn:

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

    我的是在</template>标签结尾后引用的

    在webpack配置里module.exports中加个externals:

    module.exports = {
      context: path.resolve(__dirname, '../'),
      entry: {
        // app: './src/main.js'
        app: ["babel-polyfill", "./src/main.js"] //引入babel-polyfill 兼容IE
      },
      externals: { "BMap": "BMap" },
    }

    此处依旧报错

    接着,使用异步加载

    新建一个map.js,里边的内容

    export function map(ak) {  
      return new Promise(function (resolve, reject) {  
        window.onload = function () {  
          resolve(BMap)  
        }  
        var script = document.createElement("script");  
        script.type = "text/javascript";  
        script.src = "http://api.map.baidu.com/api?v=2.0&ak="+ak+"&callback=init";  
        script.onerror = reject;  
        document.head.appendChild(script);  
      })  
    }  

    在需要页面import进来,

    import {map} from '@/map.js'

    最后挂载,在css上,记得设置地图盒子宽高,不然显示不出来

    mounted () {
          this.$nextTick(function(){  
            var _this = this;  
            MP(_this.ak).then(BMap => {  
              var map = new BMap.Map("allmap");
              var point = new BMap.Point(经纬度,经纬度);
              map.centerAndZoom(point, 19);
              var marker = new BMap.Marker(point);  // 创建标注
              map.addOverlay(marker);              // 将标注添加到地图中
    
              var label = new BMap.Label("公司名字",{offset:new BMap.Size(20,-10)});
              label.setStyle({
                      borderColor : "black"
                      
                  });
              //marker.addEventListener("click", function(){    //点击弹出可去掉注释      
                  marker.setLabel(label); //开启信息窗口
              //});  //点击弹出可去掉注释         
    
            })
          })
        },

      百度地图生成器

      http://api.map.baidu.com/lbsapi/creatmap/index.html

            百度地图拾取坐标系统
            http://api.map.baidu.com/lbsapi/getpoint/index.html

            百度地图JavaScript API
            http://lbsyun.baidu.com/index.php?title=jspopular

    之前写过一篇关于html上引用百度地图的博文:https://www.cnblogs.com/web1/p/8519987.html

      

  • 相关阅读:
    快速幂(Fast Pow)
    半小时写完替罪羊重构点分树做动态动态点分治之紫荆花之恋的wyy贴心指导
    POJ2942 UVA1364 Knights of the Round Table 圆桌骑士
    二分图判定
    Tarjan求点双连通分量
    POJ1523 SPF 单点故障
    OI比赛常数优化
    Tarjan求割点
    NOIP2015 D1T1 神奇的幻方
    NOIP2016 D2T2 蚯蚓
  • 原文地址:https://www.cnblogs.com/web1/p/9106985.html
Copyright © 2020-2023  润新知