这次老板新接了一个四点半官网页面,使用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

  

vue项目 调用百度地图 BMap is not defined的更多相关文章

  1. vue项目接入百度地图

    方法一 :使用第三方工具 vue-baidu-map 安装命令: yarn add vue-baidu-map --save 文档地址:https://dafrok.github.io/vue-bai ...

  2. vue引入百度地图 --BMap is not defined ,eslint BMap报错

    在mounted初始化地图的时候,因为异步问题会导致BMap is not defined,也就是百度的api还没完全引入或者加载完成,就已经进行地图初始化了 解决方法: 1.创建一个map.js e ...

  3. Vue项目引入百度地图

    先去百度开放平台申请ak.http://lbsyun.baidu.com/ 进来之后 按照步骤走,先登录百度账号,然后申请成为开发者,然后申请ak密钥 填写完毕后提交,会给你邮箱发个激活邮件 点击申请 ...

  4. Vue --》 如何在vue中调用百度地图

    1.项目根目录下下载百度地图插件 npm install vue-baidu-map –save 2.在首页index.html中引入百度地图: <script type="text/ ...

  5. vue项目使用百度地图API获取经纬度

    一.首先在百度api注册获得ak密钥 二.进行引入 (1).第一种方式: 直接在vue中index.html中用script标签引入. //你的ak密钥需要替换真实的你的ak码 <script ...

  6. vue项目,百度地图api高亮选取区域,高亮某个地区,行政区域等

    效果如下: var blist = [] ,maxZoom: });// 创建地图实例 var point = new window.BMap.Point(89.48,31.57); map.cent ...

  7. Angular/Vue调用百度地图+标注点不显示图标+多标注点计算地图中心位置

    整理一下~ 一.在vue中调用百度地图 首先当然是申请百度密匙(很简单,不多说) 1.在index.html文件中引入百度地图JavaScript API接口:   <script type=& ...

  8. Vue中使用百度地图——根据输入框输入的内容,获取详细地址

    知识点:在Vue.js项目中调用百度地图API,实现input框,输入地址,在百度地图上定位到准确地址,获得到经纬度 参考博客:  百度地图的引用,初步了解参考博客:http://blog.csdn. ...

  9. 在XAF(ASP.NET)中以ListEditor的形式调用百度地图API

    因为项目需要,在系统中使用地图显示设备的地理位置.考虑过ArgGIS,Bing和Baidu地图.本来想用ArgGIS,看教程嫌麻烦.所以还是用Web地图吧.Bing的话还要申请个key,没心情.百度地 ...

随机推荐

  1. 【idea】常用快捷键

    快捷键盘含义 键组合 进入一个类的实现 alt+command+B 加get,set,构造函数,重写方法 command+N 全项目关键字查找 shift+command+F  查看一个类在哪儿被依赖 ...

  2. 【网络通信】TCP三次握手和四次挥手的示意图

    三次握手 TCP连接是通过三次握手来连接的. 第一次握手 当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为m,等待服务器确认,这时客户端的状态为SYN_SE ...

  3. vue路由初始化路转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. hasura graphql pg 自定义函数的使用

      hasura graphql 的安装可以参考相关项目 创建函数 数据表创建 CREATE TABLE sql_function_table ( id SERIAL PRIMARY KEY, inp ...

  5. 在做私密相冊的SDK,奇怪的是在ios6上项目里的navigationbar能够传进来一直往下传,但在ios7上却仅仅能够传一层,原来答案在下边

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/chenyong05314/article/details/33867247 //若不加这一句 在IO ...

  6. POJ1236学校网络——tarjan

    题目:http://poj.org/problem?id=1236 Tarjan+缩点.温习一下Tarjan的写法. 1.在缩点后的TAG中,有几个联通块等价于有几个入度为0的点! 2.把它们都联通相 ...

  7. windows server 2012 AD 域和站点部署系列

    http://blog.csdn.net/ronsarah/article/category/1495599 http://blog.csdn.net/david_520042/article/cat ...

  8. oracle查看和修改最大连接数

    第一步,在cmd命令行,输入sqlplus 或者直接在plsql中打开command window 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 1 2 3 4 ...

  9. linux 线程的同步 三 (内存信号量的使用)

    信号量.同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已.但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信的信号量混淆,关于用于进程间通 ...

  10. unity里面的gameobject和transform的关系

    一切都是物体(gameobject),而transform是物体的一个基本属性类,包含位置,旋转,缩放,三个基本属性,两者之间可以互相转换 查找物体,建议用transform,GameObject无法 ...