VUE使用百度地图插件
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使用百度地图插件相关推荐
- Vue的百度地图插件尝试
百度地图插件 安装 CDN全局安装 <script src="https://unpkg.com/vue-baidu-map"></script> 插件的引 ...
- vue集成百度地图(含搜索框获取经纬度)
vue-baidu-map文档地址 https://dafrok.github.io/vue-baidu-map/#/zh/index 第一步:vue下载百度地图插件 npm install vue- ...
- mysql 百度地图插件_GitHub - huizhong/grafana-baidumap-panel: Grafana 百度地图插件
Baidumap Panel Plugin for Grafana Grafana的百度地图插件,基于WorldMap修改.主要的可视化功能有:更换AK.添加/删除控件.更换主题.更改地图级别,测距工 ...
- html引入百度地图报错,vue引入百度地图BMapGL,或者其他个性化地图
3.jpg vue的百度地图早就有vue-baidu-map这里就不赘述了, 自己去直接对着API写就好了,基本上已经满足绝大多数需求了还简单方便. vue-baidu-map 传送门 https:/ ...
- Vue引用百度地图API
Vue引用百度地图API 一. 通过官网申请ak 1. 打开百度地图官网,在开发文档中找到JavaScript API 2.点击账号和获取密钥 3.按照页面步骤操作即可 二. 通过模块化引入 1. 安 ...
- vue使用百度地图获取位置信息
vue使用百度地图获取位置信息 最近再做H5页面,就一个单页面,进来的时候,要获取地理位置,上代码 1.使用srcipt不受同源策略的影响,来获取百度api 写在了一个bmap.js里面,onBMap ...
- vue整合百度地图(关键字检索)
百度地图 文章目录 百度地图 一.申请百度地图的密钥 二.官方示例 三.使用vue整合百度地图步骤说明 3.1 效果图: 3.2 方式一 vue脚手架2.0版本引用(不推荐): 3.3 方式二 封装成 ...
- Vue+Echarts+百度地图 小例子
刚学完Echarts后,看到一些官方例子,粘贴代码下来却实现不了相应的效果,经过一番了解,发现还要引入百度地图,记录详细过程如下. 1.安装echarts(使用3.x,4.x) npm install ...
- vue自定义百度地图弹窗
vue自定义百度地图弹窗 1.全局注册方式 1.1 引入百度地图和百度地图自定义弹窗js(自己去百度api里面下载就可以了) <!DOCTYPE html> <html lang=& ...
最新文章
- SAP WM 采购订单收货后LT06报错-No bin types have been assigned to storage unit type IP-
- srwebsocket 服务器过段时间会关闭_王者荣耀:伽罗大招遭到暗改?开启后直接冷却时间,无法手动关闭...
- api权限管理系统与前后端分离实践
- My story with XJTLU Library
- TensorFlow学习笔记之一(TensorFlow基本介绍)
- CompletableFuture异步调用
- value toDF is not a member of org.apache.spark.rdd.RDD[People]
- 推荐一款.NET Core开源爬虫神器:DotnetSpider
- 求职信计算机工程师英语作文,开发工程师英文求职信范文
- 前端学习(2168):url的hash和html的history
- 微信公众号开发经验总结
- 【集合论】集合概念与关系 ( 集合表示 | 数集合 | 集合关系 | 包含 | 相等 | 集合关系性质 )
- 推荐六本前端开发必看的书籍
- 在Domino上部署运行在Web浏览器中的Notes客户机
- python里的apply,applymap和map
- Python实现手写体数字图片识别+GUI界面+画板数字识别
- 海思hi3518用eclipse采用交叉编译器编译程序在海思开发板上运行
- 【C进阶】qsort函数详解
- [翻译] YLGIFImage 高效读取GIF图片
- tensorflow笔记:tf.argmax()和tf.equal()的使用
热门文章
- Java 字符串统计每个元音字母(aeiou)在字符串中出现的次数
- 一起进阶一起拿高工资!Java开发进阶-log4j2日志脱敏原理分析
- 磁通 磁通量 磁链 磁通密度 磁场强度 交流磁通密度 直流磁通密度 最大磁通密度 ... .. ...
- VMware磁盘变满——磁盘压缩——虚拟机瘦身
- CISP注册信息安全专业人员
- GNN-CS224W: 16 Position-aware and Identity-aware GNNs and Robustness of GNN
- 神经网络下采样、上采样——图文计算
- xp补丁导致 vs2008 出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 的解决办法
- V4L2摄像头测试(一)
- 计算机操作系统分页试题,计算机操作系统典型例题解析之二