原文链接: 点我

最近在项目中使用了百度地图来显示物流信息,实现方式有两种:

引用Vue Baidu Map
引用BMap
存在的问题:\color{red}{存在的问题:}存在的问题:;
使用BMap可以修改起始点和终点的图标,但是地图需要刷新页面才会显示。
针对以上问题,问题的实现如下所示:

Vue文件中的代码

<template>
<div id="myMap"></div>
</template>
import qs from "qs";
export default {
mounted() {
this.getMap();
},
methods: {
// 绘制地图
getMap() {
var map = new BMap.Map("myMap");
map.enableScrollWheelZoom(true);
//注意:下面的坐标值换为自己的动态值即可,我就不多说了
var start = new BMap.Point(this.startLng, this.startLat);
var end = new BMap.Point(this.currentLng, this.currentLat);
var p1 = new BMap.Point(this.currentLng, this.currentLat);
//自定义图标
var startIcon = new BMap.Icon(
require("../../assets/images/point.png"), //起点图片
new BMap.Size(25, 25)
);
var currentIcon = new BMap.Icon(
require("../../assets/images/car.png"), //物流车图片
new BMap.Size(25, 25)
);
var endIcon = new BMap.Icon(
require("../../assets/images/point.png"), //终点图片
new BMap.Size(25, 25)
);
var driving = new BMap.DrivingRoute(map, {
renderOptions: { map: map, autoViewport: true },
onMarkersSet: function(routes) {
//标注点完成回调
map.clearOverlays(); //删除点
var myStart = new BMap.Marker(start, { icon: startIcon });
map.addOverlay(myStart);
var myEnd = new BMap.Marker(end, { icon: endIcon });
map.addOverlay(myEnd);
var myP1 = new BMap.Marker(p1, { icon: currentIcon });
map.addOverlay(myP1);
}
});
driving.search(start, end, { waypoints: [p1] });
},
};
</script>

  

  • 这样写之后浏览器会报BMap is undefined,解决方法如下:

  • 在项目根目录下建立Js文件(比如:map.js)

    export function MP(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);
    })
    }

    在App.vue中

  • <script>
    import { MP } from './map' //引入上面创建的map.js文件
    export default {
    name: 'app',
    data(){
    return {
    ak: "这里是您的密钥",
    }
    },
    async mounted(){
    await MP(this.ak);
    }
    }
    </script>

      要使用的vue文件中

  • mounted() {
    // 解决BMap undefined
    this.$nextTick(() => {
    var timer = setTimeout(() => {
    this.getMap();
    }, 500);
    });
    },

    好啦,通过上面的代码刷新显示地图就解决啦,若大家有更好的方法欢迎分享在下面

    解决vue中BMap未定义问题的更多相关文章

    1. 【翻译】使用Vuex解决Vue中的身份验证

      翻译原文链接:https://scotch.io/tutorials/handling-authentication-in-vue-using-vuex 我的翻译小站:https://www.zcfy ...

    2. 解决Vue中文本输入框v-model双向绑定后数据不显示的问题

      前言 项目中遇到一个问题就是在Vue中双向绑定对象属性时,手动赋值属性后输入框的数据不实时更新的问题. <FormItem label="地址" prop="eve ...

    3. 解决Vue中"This dependency was not found"的方法

      今天在初始化项目中,出现了一个奇怪的情况:明明路径是对的,但是编译的时候,一直报"This dependency was not found"的错. 代码如下: import Vu ...

    4. 解决vue中element组件样式修改无效

      vue中element组件样式修改无效 <style> .detail{ .el-input__inner { height: 48px; } } </style> 直接写st ...

    5. 解决vue中使用laydate.js选择日期后再修改其他model时日期会被清空问题

      首先描述一下问题,下图中均绑定v-model,例如先选择出生开始时间,然后当再选择地区或其他选项时该时间就会被清空 首先看一下我这边开始的默认值,开始我设置都为空 当我选择如下图的生日开始时间与结束时 ...

    6. 解决vue中对象属性改变视图不更新的问题

      在使用VUE的过程中,会遇到这样一种情况, vue data 中的数据更新后,视图没有自动更新. 这个情况一般分为两种, 一种是数组的值改变,在改变数组的值的是时候使用索引值去更改某一项,这样视图不会 ...

    7. Vue(项目踩坑)_解决vue中axios请求跨域的问题

      一.前言 今天在做项目的时候发现axios不能请求跨域接口 二.主要内容 1.之前直接用get方式请求聚合数据里的接口报错如下 2.当前请求的代码 3.解决方法 (1)在项目目录中依次找到:confi ...

    8. 解决vue中百度地图覆盖物引用本地图片问题

      这次的主要目的是在百度地图中引用自定义的覆盖物,路径是再asset/images/文件夹下,直接引用出错.需要先导入再引用. 在<script></script>代码中增加如下 ...

    9. 利用设置新数据存储结构解决vue中折叠面板双向绑定index引起的问题

      问题背景是,在进行机器性能可视化的前端开发时,使用折叠面板将不同机器的性能图表画到不同的折叠面板上去.而机器的选择利用select下拉选项来筛选. 由于在折叠面板中,通过 如下v-model双向绑定了 ...

    随机推荐

    1. java对于目录下的相关文件的单词操作

      写入文件的目录.代码通过找目录下的文件,进行相关函数的操作.如果目录下面包含子目录.代码设有调用递归的方法,在寻找子目录下的文件 在进行相关的函数操作.函数主要是按用户输入的个数要求输出文件中出现次数 ...

    2. C语言移动一个点

      #include"stdio.h"#include"windows.h"#include"conio.h"#define M 3#defin ...

    3. c++用递归法将一个整数n转换成字符串

      任务描述 用递归法将一个整数n转换成字符串.例如,输入483,应输出字符串“483”.n的位数不确定,可以是任意位数的整数. 测试输入: 预期输出: 程序源码: #include <stdio. ...

    4. python3(十二)functional

      # 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! # 变量可以指向函数 abs(-10) abs # <built-in function abs> ...

    5. Odoo 查看 模块app 对应的 源码 相关依赖模块信息

      安装好app后再路径上 加上debug ,在查看 app 信息 如下 http://127.0.0.1:8069/web?debug#id=138&view_type=form&mod ...

    6. 【Java】【常用类】Object 基类 源码学习

      源码总览: 有好些都是native本地方法,背后是C++写的 没有关于构造器的描述,默认编译器提供的无参构造 https://blog.csdn.net/dmw412724/article/detai ...

    7. Julia基础语法复数和分数

       1.复数   2.分数

    8. Python处理HTTP返回包遇到问题总结TypeError、keyError、SyntaxError、AttributeError

      处理HTTP返回包包括对关键参数的校验,参数完整性检验,获取返回包参数的方法,返回包数据去重方法 在执行时遇到不少问题,部分问题记录如下: 1.报错信息:“TypeError: list indice ...

    9. Java优秀教程

      1.java中局部变量是在栈上分配的: 2.数组是储存在堆上的对象,可以保存多个同类型变量: 3.在Java语言中,所有的变量在使用前必须声明. 4.局部变量没有默认值,所以局部变量被声明后,必须经过 ...

    10. vue2.x学习笔记(四)

      接着前面的内容:https://www.cnblogs.com/yanggb/p/12563162.html. 模板语法 vue使用了基于html的模板语法,允许开发者声明式地将dom绑定到底层vue ...