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面对敌人的严刑逼供,我一个字也没说,而是一五一十写了下来。
posted @ 2021-02-26 15:30  疯子110  阅读(1868)  评论(0编辑  收藏  举报