Vue项目引入百度地图


https://www.cnblogs.com/LUA123/p/11281604.html

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

 

 

进来之后

 

 

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

 

 

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

 

 

点击申请密钥

 

 

      

 

然后点击提交

 

 

 

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

 使用

 百度地图Vue:https://dafrok.github.io/vue-baidu-map/

执行

1
npm  install  vue-baidu-map

  

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

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

  

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

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

  

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

 

 

 

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

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

  

父组件

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

  

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

 

 

 

小LUA面对敌人的严刑逼供,我一个字也没说,而是一五一十写了下来。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM