VUE使用百度地图插件

  • 实现功能
  • 百度地图的使用
  • 相关代码片段

实现功能

需求: 使用百度地图插件, 实现手动定位, 获取经纬度地址; 设置经纬度定位; 地址搜索

百度地图的使用

参考
Vue Baidu Map手册
百度地图API

相关代码片段

//html 地图弹框显示
<el-dialog title="地图" :visible.sync="dialogBaiduMap" width="60%"><div id="map-wrap" class="map-maker-wrapper"><baidu-map ak="3isqLYGym4Pz60BiOY4NZyLXVdxAMx6H"class="map-wrap":center="mapCenter":zoom="mapZoom"@click="getLocation":scroll-wheel-zoom="true"@ready="mapHandler"><bm-navigation anchor="BMAP_ANCHOR_TOP_LEFT"></bm-navigation><!-- <bm-city-list anchor="BMAP_ANCHOR_TOP_RIGHT"></bm-city-list> --><bm-geolocationanchor="BMAP_ANCHOR_BOTTOM_RIGHT":showAddressBar="true":autoLocation="true"></bm-geolocation></baidu-map><div class="search-wrap"><div class="search_box"><input class="search-input" type="text" v-model="keyword"  @input="autoSearch"/><el-button class="search-button" size="small" type="info" plain icon="el-icon-search" @click="handleSearch"></el-button></div><!-- 检索结果 --><div v-show="showResultFlag" class="search-result"><div v-for="(item, index) in searchResult" class="item" :key="index" @click="handleSelect(item)"><p class="title">{{ item.title }}</p><!-- <p class="address">{{ item.address }}</p> --></div></div></div></div><div class="info"><span>详细地址</span><el-input v-model="businessDetail.address"></el-input><div v-if="!isChangeBusinessDetail"><span>经度: </span> {{businessDetail.longitude}},<span>纬度: </span> {{businessDetail.latitude}}<i class="el-icon-edit" @click="changeBusinessDetail" style="color:#1890ff;font-size:16px;margin-left:20px;"></i></div><div v-if="isChangeBusinessDetail">经度: <el-input v-model="businessDetail.longitude" class="input_box"></el-input>纬度: <el-input v-model="businessDetail.latitude" class="input_box"></el-input><el-button size="small" type="info" @click="cancelBusinessDetail">取消</el-button><el-button size="small" type="primary" @click="sureBusinessDetail">保存</el-button></div></div><div slot="footer" class="dialog-footer"><el-button size="small" type="primary" @click="dialogBaiduMap = false">确 定</el-button></div></el-dialog>
//局部引用百度地图
import BaiduMap from 'vue-baidu-map/components/map/Map.vue'
import { BmLocalSearch, BmNavigation, BmGeolocation, BmCityList } from 'vue-baidu-map'components:{BaiduMap,BmLocalSearch,  //地区检索BmNavigation,  //缩放BmGeolocation,  //定位BmCityList  //城市列表},
mapHandler({BMap, map}){this.BMap = BMapthis.map = mapmap.clearOverlays() //清除地图上所有覆盖物let lng = this.businessDetail.longitudelet lat = this.businessDetail.latitudemap.addOverlay(new BMap.Marker({ lng, lat }))
},//在地图上选择区域  click事件
getLocation(e) {//设置经度this.businessDetail.longitude = e.point.lng//设置纬度this.businessDetail.latitude = e.point.lat//百度地图类let BMapGL = this.BMap//地图对象let map = this.map//清除地图上所有的覆盖物(保证每次点击只有一个标记)map.clearOverlays()//创建定位标记let marker = new BMapGL.Marker(new BMapGL.Point(e.point.lng, e.point.lat))//将标记添加到地图上map.addOverlay(marker)//创建坐标解析对象let geoc = new BMapGL.Geocoder()//解析当前的坐标成地址geoc.getLocation(e.point, (rs) => {//获取地址对象let addressComp = rs.addressComponents//拼接出详细地址this.businessDetail.address =addressComp.province +addressComp.city +addressComp.district +addressComp.street +addressComp.streetNumber})},//通过经纬度定点, 然后创建坐标解析对象解析当前的坐标成地址
setLocation() {let BMapGL = this.BMaplet map = this.mapmap.clearOverlays()let point = new BMapGL.Point(this.businessDetail.longitude,this.businessDetail.latitude)let marker = new BMapGL.Marker(point)map.addOverlay(marker)let geoc = new BMapGL.Geocoder()geoc.getLocation(point, (rs) => {let addressComp = rs.addressComponentsthis.businessDetail.address =addressComp.province +addressComp.city +addressComp.district +addressComp.street +addressComp.streetNumber})
},//手动搜索地址, 出现一串下拉地址
handleSearch() {let self = thisself.showResultFlag = trueself.selectInfo = Object.assign({}, defaultInfo)let local = new this.BMap.LocalSearch(this.map, {renderOptions: {map: this.map,selectFirstResult: false},onSearchComplete: function (res) {if (res && res.Kr) {self.searchResult = [...res.Kr]}}})local.search(this.keyword)
},//选中一个地址, 在地图上显示
handleSelect(item) {let self = thislet title = item.titlelet { lng, lat } = item.marker.pointlet point = new this.BMap.Point(lng, lat)let geoc = new this.BMap.Geocoder()geoc.getLocation(point, function (res) {let addString =res.addressComponents.province + res.addressComponents.city + res.addressComponents.district + titleself.showResultFlag = falseself.keyword = addStringself.map.clearOverlays() //清除地图上所有覆盖物self.map.addOverlay(new self.BMap.Marker({ lng, lat }))self.mapCenter.lng = lngself.mapCenter.lat = latself.mapZoom = 15})
},

VUE使用百度地图插件相关推荐

  1. Vue的百度地图插件尝试

    百度地图插件 安装 CDN全局安装 <script src="https://unpkg.com/vue-baidu-map"></script> 插件的引 ...

  2. vue集成百度地图(含搜索框获取经纬度)

    vue-baidu-map文档地址 https://dafrok.github.io/vue-baidu-map/#/zh/index 第一步:vue下载百度地图插件 npm install vue- ...

  3. mysql 百度地图插件_GitHub - huizhong/grafana-baidumap-panel: Grafana 百度地图插件

    Baidumap Panel Plugin for Grafana Grafana的百度地图插件,基于WorldMap修改.主要的可视化功能有:更换AK.添加/删除控件.更换主题.更改地图级别,测距工 ...

  4. html引入百度地图报错,vue引入百度地图BMapGL,或者其他个性化地图

    3.jpg vue的百度地图早就有vue-baidu-map这里就不赘述了, 自己去直接对着API写就好了,基本上已经满足绝大多数需求了还简单方便. vue-baidu-map 传送门 https:/ ...

  5. Vue引用百度地图API

    Vue引用百度地图API 一. 通过官网申请ak 1. 打开百度地图官网,在开发文档中找到JavaScript API 2.点击账号和获取密钥 3.按照页面步骤操作即可 二. 通过模块化引入 1. 安 ...

  6. vue使用百度地图获取位置信息

    vue使用百度地图获取位置信息 最近再做H5页面,就一个单页面,进来的时候,要获取地理位置,上代码 1.使用srcipt不受同源策略的影响,来获取百度api 写在了一个bmap.js里面,onBMap ...

  7. vue整合百度地图(关键字检索)

    百度地图 文章目录 百度地图 一.申请百度地图的密钥 二.官方示例 三.使用vue整合百度地图步骤说明 3.1 效果图: 3.2 方式一 vue脚手架2.0版本引用(不推荐): 3.3 方式二 封装成 ...

  8. Vue+Echarts+百度地图 小例子

    刚学完Echarts后,看到一些官方例子,粘贴代码下来却实现不了相应的效果,经过一番了解,发现还要引入百度地图,记录详细过程如下. 1.安装echarts(使用3.x,4.x) npm install ...

  9. vue自定义百度地图弹窗

    vue自定义百度地图弹窗 1.全局注册方式 1.1 引入百度地图和百度地图自定义弹窗js(自己去百度api里面下载就可以了) <!DOCTYPE html> <html lang=& ...

最新文章

  1. SAP WM 采购订单收货后LT06报错-No bin types have been assigned to storage unit type IP-
  2. srwebsocket 服务器过段时间会关闭_王者荣耀:伽罗大招遭到暗改?开启后直接冷却时间,无法手动关闭...
  3. api权限管理系统与前后端分离实践
  4. My story with XJTLU Library
  5. TensorFlow学习笔记之一(TensorFlow基本介绍)
  6. CompletableFuture异步调用
  7. value toDF is not a member of org.apache.spark.rdd.RDD[People]
  8. 推荐一款.NET Core开源爬虫神器:DotnetSpider
  9. 求职信计算机工程师英语作文,开发工程师英文求职信范文
  10. 前端学习(2168):url的hash和html的history
  11. 微信公众号开发经验总结
  12. 【集合论】集合概念与关系 ( 集合表示 | 数集合 | 集合关系 | 包含 | 相等 | 集合关系性质 )
  13. 推荐六本前端开发必看的书籍
  14. 在Domino上部署运行在Web浏览器中的Notes客户机
  15. python里的apply,applymap和map
  16. Python实现手写体数字图片识别+GUI界面+画板数字识别
  17. 海思hi3518用eclipse采用交叉编译器编译程序在海思开发板上运行
  18. 【C进阶】qsort函数详解
  19. [翻译] YLGIFImage 高效读取GIF图片
  20. tensorflow笔记:tf.argmax()和tf.equal()的使用

热门文章

  1. Java 字符串统计每个元音字母(aeiou)在字符串中出现的次数
  2. 一起进阶一起拿高工资!Java开发进阶-log4j2日志脱敏原理分析
  3. 磁通 磁通量 磁链 磁通密度 磁场强度 交流磁通密度 直流磁通密度 最大磁通密度 ... .. ...
  4. VMware磁盘变满——磁盘压缩——虚拟机瘦身
  5. CISP注册信息安全专业人员
  6. GNN-CS224W: 16 Position-aware and Identity-aware GNNs and Robustness of GNN
  7. 神经网络下采样、上采样——图文计算
  8. xp补丁导致 vs2008 出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 的解决办法
  9. V4L2摄像头测试(一)
  10. 计算机操作系统分页试题,计算机操作系统典型例题解析之二