解决vue中BMap未定义问题
原文链接: 点我
最近在项目中使用了百度地图来显示物流信息,实现方式有两种:
引用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未定义问题的更多相关文章
- 【翻译】使用Vuex解决Vue中的身份验证
翻译原文链接:https://scotch.io/tutorials/handling-authentication-in-vue-using-vuex 我的翻译小站:https://www.zcfy ...
- 解决Vue中文本输入框v-model双向绑定后数据不显示的问题
前言 项目中遇到一个问题就是在Vue中双向绑定对象属性时,手动赋值属性后输入框的数据不实时更新的问题. <FormItem label="地址" prop="eve ...
- 解决Vue中"This dependency was not found"的方法
今天在初始化项目中,出现了一个奇怪的情况:明明路径是对的,但是编译的时候,一直报"This dependency was not found"的错. 代码如下: import Vu ...
- 解决vue中element组件样式修改无效
vue中element组件样式修改无效 <style> .detail{ .el-input__inner { height: 48px; } } </style> 直接写st ...
- 解决vue中使用laydate.js选择日期后再修改其他model时日期会被清空问题
首先描述一下问题,下图中均绑定v-model,例如先选择出生开始时间,然后当再选择地区或其他选项时该时间就会被清空 首先看一下我这边开始的默认值,开始我设置都为空 当我选择如下图的生日开始时间与结束时 ...
- 解决vue中对象属性改变视图不更新的问题
在使用VUE的过程中,会遇到这样一种情况, vue data 中的数据更新后,视图没有自动更新. 这个情况一般分为两种, 一种是数组的值改变,在改变数组的值的是时候使用索引值去更改某一项,这样视图不会 ...
- Vue(项目踩坑)_解决vue中axios请求跨域的问题
一.前言 今天在做项目的时候发现axios不能请求跨域接口 二.主要内容 1.之前直接用get方式请求聚合数据里的接口报错如下 2.当前请求的代码 3.解决方法 (1)在项目目录中依次找到:confi ...
- 解决vue中百度地图覆盖物引用本地图片问题
这次的主要目的是在百度地图中引用自定义的覆盖物,路径是再asset/images/文件夹下,直接引用出错.需要先导入再引用. 在<script></script>代码中增加如下 ...
- 利用设置新数据存储结构解决vue中折叠面板双向绑定index引起的问题
问题背景是,在进行机器性能可视化的前端开发时,使用折叠面板将不同机器的性能图表画到不同的折叠面板上去.而机器的选择利用select下拉选项来筛选. 由于在折叠面板中,通过 如下v-model双向绑定了 ...
随机推荐
- MTK Android Camera运行流程
Android Camera 运行流程 总体架构1.CameraService服务的注册2.Client端的应用层到JNI层Camera App-JNI3.Client到Service的连接4.HAL ...
- 统计分析_集中趋势and离散程度
1.数组的集中趋势-如何定义数组的中心 1.1 常用几下几个指标来描述一个数组的集中趋势 均值-算术平均数 . 中位数-将数组升序或降序排列后,位于中间的数. 众数-数组中出现最多的数. 1.2 指标 ...
- HBase-2.2.3源码编译-Windows版
源码环境一览 windows: 7 64Bit Java: 1.8.0_131 Maven:3.3.9 Git:2.24.0.windows.1 HBase:2.2.3 Hadoop:2.8.5 下载 ...
- 并查集---体会以及模板&&How Many Tables - HDU 1213
定义&&概念: 啥是并查集,就是将所有有相关性的元素放在一个集合里面,整体形成一个树型结构,它支持合并操作,但却不支持删除操作 实现步骤:(1)初始化,将所有节点的父亲节点都设置为自己 ...
- 区块链 Hyperledger Fabric v1.0.0 环境搭建
前言:最近项目涉及到超级账本,在有些理论知识的基础上,需要整一套环境来. 这是一个特别要注意的事情,笔者之前按照网络上推荐,大部分都是推荐ubuntu系统的,于是下载Ubuntu系统(16.04.5和 ...
- CSS两种盒子模型:cntent-box和border-box
cntent-box 平时普通盒子模型,padding,border盒子会变大,向外扩展border-box 特殊盒子模型,padding,border盒子会变大,向内扩展
- Daily Scrum 12/14/2015
Progress: Dong&Minlong: 基于Oxford Speech API成功实现语音输入的功能,但由于服务器存在访问次数的限制(每分钟6次),所以暂不准备将此功能加入ALPHA版 ...
- Java Instrumentation插桩技术学习
Instrumentation基础 openrasp中用到了Instrumentation技术,它的最大作用,就是类的动态改变和操作. 使用Instrumentation实际上也可以可以开发一个代理来 ...
- 基于Lua的游戏服务端框架简介
基于Lua的游戏服务端框架简介 [转]https://gameinstitute.qq.com/community/detail/106396 基于lua的游戏服务端框架简介 1. 引言 笔者目前在参 ...
- .Net Core Send Email
1.安装Nuget包MailKit,引用命名空间. using MailKit.Net.Smtp; using MimeKit; 注意:引用MailKit对应最新版本 2.定义收发地址和标题 Mime ...
- 【翻译】使用Vuex解决Vue中的身份验证