当前位置: 首页 > article >正文

vue-baidu-map的基本使用

前言

公司项目需求引入百度地图,由于给的时间比较短,所以就用了已经封装好了的vue-baidu-map

一、vue-baidu-map是什么?

vue-baidu-map是基于vue.js封装的百度地图组件(官方文档)

二、使用步骤

1.下载插件

//我下载的版本
npm install vue-baidu-map@0.21.22

2. 引入

main.js

import BaiduMap from 'vue-baidu-map'

Vue.use(BaiduMap, {
    // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */
  ak: 'YOUR_APP_KEY'
})

3.使用 

1.地图初始化

//center为初始定位  zoom是缩放  scroll-wheel-zoom是滚动  ready是初始化事件
//mapType是地图类型
<baidu-map :center="location" :zoom="zoom" :scroll-wheel-zoom="wheel" @ready="handler" style="width: 100%; height: 100%"  :mapClick="false" :mapType="mapType" id="map" @mouseout="mouseout" @mouseover="mouseover">
</baidu-map>


export default {

 data() {
        return {
           location: { lng: 0, lat: 0 },
            zoom: 11,
          wheel: true,
           mapType: "",
           BMap: null,
            map: null,
        }
},
methods: {
       handler({ BMap, map }) {
            this.BMap = BMap;
            this.map = map;
        },
  mouseover(e) {
            this.wheel = true
        },
        mouseout(e) {
            this.wheel = false
        },

}

}

(注意:以下组件相关代码都需要放进<baidu-map></baidu-map>) 

2.地图图标

<bm-marker v-for="(marker, index) in points" :position="{ lng: marker.lng, lat: marker.lat }" :key="index":massClear="false" :dragging="false" :zIndex="9999" @click="marketClick">
<!--bm-label是图标的标记-->
 <bm-label :content="marker.content" :position="{ lng: marker.lng, lat: marker.lat }" :labelStyle="{ background: 'rgba(0,0,0,.5)', color: '#fff', width: 'auto', border: 'none', fontSize: '16px' }" :offset="{ width: -20, height: 20 }">
 </bm-label>
<!--bm-info-window是点击图标显示弹窗-->
<bm-info-window :show="marker.isShow" :position="{ lng: marker.lng, lat: marker.lat }" :width="400" :height="280" :offset="{ width: -10, height: -30 }" @close="handleClose">   
</bm-info-window>
 </bm-marker>

export default {

 data() {
        return {
           points: [],
        }
},
methods: {
       marketClick(e) {
     //获取具体地址
        var geoc = new BMap.Geocoder();
        const that = this
       geoc.getLocation(e.target.point, function (rs) {
})
     }
}




3.地图搜索 

   <bm-control class="control">
   <bm-auto-complete :sugStyle="{ zIndex: 999999 }" v-model="keyword" >
      <el-input v-model="keyword" placeholder="搜地点,查范围" class="bmInput">
        <el-button slot="suffix" @click="confirmAddress">搜索</el-button>
      </el-input>
    </bm-auto-complete>
    </bm-control>
 <bm-local-search :keyword="keyword" :auto-viewport="true" @markersset="markersset" :panel="false"></bm-local-search>
export default {

 data() {
        return {
           keyword: null,
        }
},
methods: {
        confirmAddress() {
            this.map.centerAndZoom(new BMap.Point(this.localPoint.lng, 
             this.localPoint.lat), 19);
        },
   markersset(res) {
            if (res.length != 0) {
                this.localPoint = {
                    lng: res[0].point.lng,
                    lat: res[0].point.lat
                }
                this.lng = 0
                this.lat = 0
            }
            this.map.clearOverlays()


        }
     }
}

4.地图面板覆盖物 

 <bm-control class="control1" anchor="BMAP_ANCHOR_TOP_RIGHT">
                <div class="panel">
                    <div class="panelContent">
                        <el-row>
                            <el-col :span="4" class="item">
                                <span>路网:</span>
                                <el-checkbox v-model="net" @change="netChange" :disabled="disabled"></el-checkbox>
                            </el-col>
                            <el-col :span="4" class="item">
                                <span>卫星:</span>
                                <el-switch v-model="circle" @change="circleChange">
                                </el-switch>
                            </el-col>
                        </el-row>
                    </div>
                </div>
            </bm-control>

 data() {
        return {
         net:false,
         circle:false,
         disabled:true
        }
},
methods: {
//卫星
     circleChange(val) {
            if (val == true) {
                this.mapType = "BMAP_HYBRID_MAP"
                this.disabled = false
                this.net = true
            } else {
                this.mapType = "BMAP_NORMAL_MAP"
                this.disabled = true
                this.net = false
            }
        },
//路网
        netChange(val) {
            if (val == true) {
                this.mapType = "BMAP_HYBRID_MAP"
            } else {
                this.mapType = "BMAP_SATELLITE_MAP"
            }
        },
}


总结

以上内容仅仅介绍了vue-baidu-map在我们公司项目中的一些应用,有其他需求可以去官网看看。


http://www.kler.cn/a/323144.html

相关文章:

  • thinkphp6配置多应用项目及多域名访问路由app配置
  • C++各类函数评点+详解
  • DAY65||Bellman_ford 队列优化算法(又名SPFA)|bellman_ford之判断负权回路|bellman_ford之单源有限最短路
  • 如何处理 iOS 客户端内 Webview H5 中后台播放的音视频问题
  • 《基于Oracle的SQL优化》读书笔记
  • 神经网络与Transformer详解
  • SSM框架VUE电影售票管理系统开发mysql数据库redis设计java编程计算机网页源码maven项目
  • 2024/9/28 英语每日一段
  • git基础 -- 在 Git 中查找文件
  • 一批点中,找出能找出多少对可以组成的矩形
  • 基于SSM的图书管理管理系统的设计与实现 (含源码+sql+视频导入教程)
  • 深入浅出MySQL事务处理:从基础概念到ACID特性及并发控制
  • ARM基础架构-文档导读系列
  • Nuxt.js提供了多种内置的性能优化策略
  • 在 CentOS 8 服务器上运行 Selenium 代码
  • Camera Raw:打开图像
  • UE5 C++: 插件编写04 | 增加和删改前缀
  • 蓝桥杯【物联网】零基础到国奖之路:十二. TIM
  • 数据结构 ——— 顺序表oj题:编写函数,合并两个有序数组
  • 【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制
  • TDengine 在业务落地与架构改造中的应用实践!
  • RK3568笔记六十三:基于LVGL的Linux相机
  • 基于python+flask+mysql的音频信息隐藏系统
  • 9.27 C++模板
  • Spring Boot 进阶-Spring Boot 开发第一个Web接口
  • 监控易监测对象及指标之:全面监控Oracle ODBC数据库