zoukankan      html  css  js  c++  java
  • 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 {
             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 {
             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面对敌人的严刑逼供,我一个字也没说,而是一五一十写了下来。
  • 相关阅读:
    创建一个windows服务的小程序及注意事项
    Asp中上传文件
    C#创建Excel表格(样式设置)
    在Windows服务中使用EventLog组件纪录日志
    MVC中使用 事物
    WCF(学习笔记)【参见WCF教程】
    用vs命令提示符来使用 Installutil.exe来安装和卸载Windows服务
    web service使用注意事项
    iphone开发 有关 Navigation Bar 和 UITableView 的用法(Navigation Bar 的edit 按钮 自定义实现编辑状态)
    在Mvc中 使用 Ajax 提交和接收 数据
  • 原文地址:https://www.cnblogs.com/telwanggs/p/14452546.html
Copyright © 2011-2022 走看看