注意vue文件中调用地图,在mounted中调用无用时候,要在this.$nextTick()方法中调用,如下
this.$nextTick(() => {
this.baiduMap();
})
index.html 文件中
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= htmlWebpackPlugin.options.title %></title>
<script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=2SCUqD5GoTVdt2VIDS3UyCtGIdw2dMwZ"></script>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
app.vue 文件中
<template>
<div class="baidumap" id="allmap"></div>
<img alt="Vue logo" src="./assets/logo.png" />
<HelloWorld msg="Welcome to Your Vue.js App" />
</template>
<script>
import HelloWorld from "./components/HelloWorld.vue";
export default {
name: "App",
components: {
HelloWorld,
},
mounted() {
this.baiduMap();
},
methods: {
baiduMap() {
var map = new window.BMap.Map("allmap"); //创建地图
map.enableScrollWheelZoom();
// 启用滚轮放大缩小;
var point = new window.BMap.Point(114.12883, 22.688615); //设置地图位置
map.centerAndZoom(point, 12);
var marker = new window.BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
},
},
};
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
.baidumap {
width: 500px;
height: 200px;
border: 1px solid red;
}
</style>