vue项目引入百度地图

原文地址:https://www.cnblogs.com/LUA123/p/11281604.html

先去百度开放平台申请ak。http://lbsyun.baidu.com/

进来之后

按照步骤走,先登录百度账号,然后申请成为开发者,然后申请ak密钥

 填写完毕后提交,会给你邮箱发个激活邮件

点击申请密钥

      

 

然后点击提交

 

 这个时候,你就可以拿着这个ak去使用百度地图了。

 使用

 执行

1 npm install vue-baidu-map

 然后再main.js里加上(注意你自己的ak密钥)

1 import BaiduMap from 'vue-baidu-map'
2  
3 Vue.use(BaiduMap, {
4     ak: 'GpRqD2Sowifs********RRRRVl9'
5 });

 然后就可以在组件里使用了,最简单的一个例子

 1 <template>
 2     <div>
 3         <baidu-map class="map" :center="map.center" :zoom="map.zoom" @ready="handler">
 4             <!--缩放-->
 5             <bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT"></bm-navigation>
 6             <!--定位-->
 7             <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation>
 8             <!---->
 9             <bm-marker :position="map.center" :dragging="map.dragging" animation="BMAP_ANIMATION_DROP">
10                 <!--提示信息-->
11                 <bm-info-window :show="map.show">Hello~</bm-info-window>
12             </bm-marker>
13         </baidu-map>
14     </div>
15 </template>
16  
17 <script>
18     export default {
19         name: "demo",
20         data: () => ({
21             map:{
22                 center: {lng: 121.4472540000, lat: 31.3236200000},
23                 zoom: 15,
24                 show: true,
25                 dragging: true
26             },
27         }),
28         methods: {
29             handler ({BMap, map}) {
30                 let me = this;
31                 console.log(BMap, map)
32                 // 鼠标缩放
33                 map.enableScrollWheelZoom(true);
34                 // 点击事件获取经纬度
35                 map.addEventListener('click', function (e) {
36                     console.log(e.point.lng, e.point.lat)
37                 })
38             }
39         }
40     }
41 </script>
42  
43 <style scoped>
44     .map {
45         width: 100%;
46         height: 400px;
47     }
48 </style>

 然后其它页面引入这个组件即可,注:这只是个helloworld哦

 

实际上运用的话,是需要将数据传递给父组件的,比如经纬度之类的。比如:

 1 <template>
 2     <div>
 3         <a-row :gutter="16">
 4             <a-col :span="12">
 5                 <a-form-item v-if="map.isAdd" label="关键词">
 6                     <a-input v-model="map.keyword"/>
 7                 </a-form-item>
 8             </a-col>
 9             <a-col :span="12">
10                 <a-form-item v-if="map.isAdd" label="地区">
11                     <a-input v-model="map.location"/>
12                 </a-form-item>
13             </a-col>
14         </a-row>
15  
16         <baidu-map class="map" :center="map.center" :zoom="map.zoom" @ready="handler">
17             <bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT"></bm-navigation>
18             <bm-geolocation anchor="BMAP_ANCHOR_BOTTOM_RIGHT" :showAddressBar="true" :autoLocation="true"></bm-geolocation>
19             <bm-local-search v-if="map.isAdd" class="search" :keyword="map.keyword" :auto-viewport="true" :location="map.location"></bm-local-search>
20         </baidu-map>
21     </div>
22 </template>
23  
24 <script>
25     export default {
26         name: "simple-map",
27         props: {
28             map: {
29                 type: Object
30             }
31         },
32         data: () => ({
33  
34         }),
35         methods: {
36             handler ({BMap, map}) {
37                 let me = this;
38                 console.log(BMap, map)
39                 // 鼠标缩放
40                 map.enableScrollWheelZoom(true);
41                 // 点击事件获取经纬度
42                 map.addEventListener('click', function (e) {
43                     console.log(e.point.lng, e.point.lat)
44                     me.$emit('select-location', {
45                         lng: e.point.lng,
46                         lat: e.point.lat
47                     });
48                 })
49             }
50         }
51     }
52 </script>
53  
54 <style scoped>
55     .map {
56         width: 100%;
57         height: 400px;
58     }
59     .map .search{
60         margin-bottom: 65px;
61     }
62 </style>

父组件

1 <simple-map :map="mapForAdd" @select-location="selectLocation"></simple-map>
2  
3 selectLocation: function (e) {
4         // 这里用到了antDesign,不再科普了。实际上就是获取子组件传来的数据
5     this.formForAdd.setFieldsValue({
6         longitude: e.lng,
7         latitude: e.lat,
8     })
9 }

页面(效果就是点击地图上的点,传递经纬度)

posted @ 2020-08-11 11:41  从头开始1314  阅读(115)  评论(0)    收藏  举报