原文链接: 点我

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

引用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. selenium.webdriver元素定位失败

      错误提示: Traceback (most recent call last): File "E:/PythonData/Login/venv/logIn.py", line 18 ...

    2. 微信小程序实现滑动tab切换和点击tab切换并显示相应的数据(附源代码)

      这里主要用到了swiper组件和三目运算,直接上代码, 样式只有三个class,简单粗暴,懒的小伙伴们可以直接拿来用,喜欢的点个支持 <view> <view class=" ...

    3. Vulnhub DC-9靶机渗透

      信息搜集 nmap -sP 192.168.146.0/24 #主机发现 nmap -A 192.168.146.147 #扫描端口等信息 22端口过滤,80端口开放,同样的从80端口入手. 不是现成 ...

    4. openlayers-统计图显示(中国区域高亮)

      openlayers版本: v3.19.1-dist 统计图效果:         案例下载地址:https://gitee.com/kawhileonardfans/openlayers-examp ...

    5. 程序员的 Ubuntu 19.10 配置与优化指南

      原文地址:程序员的 Ubuntu 19.10 配置与优化指南 0x00 环境 CPU: Intel Core i9-9900k GPU: GeForce RTX 2070 SUPER RAM: DDR ...

    6. 使用webview查找元素,appium查找web页面元素

      9 webview查找元素 9.1 webview 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面.它使用的内核是webkit引擎,4.4版本之后,直接使用 ...

    7. JAVA debug 调试demo

      1.设置断点,在代码的行号后面鼠标左键即可2.想要看调用方法的执行流程,那么调用方法也要加断点. package day6_debug; /* * 1.设置断点,在代码的行号后面鼠标左键即可 * 2. ...

    8. dp优化---四边形不等式与决策单调性

      四边形不等式 定理1: 设w(x,y)为定义在整数集合上的二元函数,若存在任意整数a,b,c,d(a<=b<=c<=d),并且w(a,d)+w(b,c)>=w(a,c)+w(b ...

    9. 一个不错的java学习博客

      http://iteye.blog.163.com/blog/static/18630809620131484835129/

    10. Daily Scrum 1/12/2016

      Zhaoyang & Yandong: Optimize the speech input interface Fuchen: Code refactor in the NLP module ...