elementUI输入框/选项卡与百度地图联动

<template> <el-form ref="Froms" :model="formData" label-width="120px"> <el-form-item label="经营地区:" prop="businessArea"> <v-region-group :town="false" v-model="regionArea" @change="regionChange" > </v-region-group> </el-form-item> <el-form-item label="详细地址:" prop="shopAddrExt"> <el-input v-model="formData.shopAddrExt" placeholder="请输入详细地址" size="small" @input="inputShopAddr" /> <div class="map"> <baidu-map @ready="initMap" @click="getLocation" :center="center" class="map" :zoom="zoom" :scroll-wheel-zoom="true" > <bm-navigation anchor="BMAP_ANCHOR_TOP_RIGHT" /> </baidu-map> </div> </el-form-item> </el-form> </template> <script> export default { data(){ return{ formData: { shopAddrExt: '' }, regionArea: {}, // 所选区域 center: { lng: 0, lat: 0 }, // 坐标 centerPoint: {}, zoom: 3, BMap: null, map: null, geoCoder: null // 地址解析器 } }, methods: { initMap({ BMap, map }) { this.zoom = 15; this.BMap = BMap; this.map = map; this.geoCoder = new BMap.Geocoder(); // 创建地址解析器的实例 let geolocation = new BMap.Geolocation(); // 获取当前经纬度用作地图显示中心点 geolocation.getCurrentPosition((e)=>{ // 方法获取设备在当前所处的坐标位置 console.log(e); this.center.lng = e.longitude; this.center.lat = e.latitude; this.setCenterZoom(e); // e获取到经纬度设置地图中心点 this.setIcon(e); // 创建点坐标 }) // 监听地图缩放结束事件 lng表示经度,lat表示纬度(处理百度地图放大之后中心点偏移问题) this.map.addEventListener('zoomend', (e)=> { this.map.centerAndZoom( new BMap.Point(this.center.lng, this.center.lat), this.map.getZoom(); ); }); // enableMapClick:false 表示禁止地图内景点信息点击 // this.map = new BMap.Map('baiduMap', { enableMapClick: false }); // 设置地图允许的最大最小级别 // this.map.setMinZoom(5); // this.map.setMaxZoom(20); // 开启鼠标滚轮缩放 // this.map.enableScrollWheelZoom(true); }, // 设置显示中心点 setCenterZoom(e){ this.center.lng = e.longitude; this.center.lat = e.latitude; this.centerPoint = new BMap.Point(e.longitude, e.latitude); // 选择一个经纬度作为中心点 this.map.centerAndZoom(this.centerPoint, 14); // 设置地图中心点和缩放级别 }, // 创建点坐标 setIcon(latLng){ // 创建自定义标记 参数:自定义图片路径 大小 偏移量 const icon = new BMap.Icon( require('../../../../../static/icon/position4.png'), new BMap.Size(32, 32), // { anchor: new BMap.Size(0, 0) } ); // 生成自定义图标点 // 创建点 const point = new BMap.Point(latLng.longitude, latLng.latitude); // 创建标注 const marker = new BMap.Marker(point, { icon: icon }); this.map.clearOverlays(); // 先删除 this.map.addOverlay(marker);// 将标注添加到地图中 // 给标记点添加点击事件 marker.addEventListener('click', (e) => { // 执行想进行的操作(经个人测试在此处注册点击事件效果最佳, 该有的数据项都可以获取) console.log(e) }) }, // 获取地图点击的地址 getLocation(e){ // console.log(e.point) let latLng = { longitude: e.point.lng, latitude: e.point.lat } this.setCenterZoom(latLng);// 更改地图显示中心点 this.setIcon(latLng);// 创建点坐标 this.geoCoder.getLocation(e.point, (rs) => { // console.log(rs.surroundingPois) // 附近的POI点(array) // console.log(rs.business) // 商圈字段 let adr = rs.addressComponents; let address = adr.province + adr.city + adr.district + adr.street + adr.streetNumber; // 省市区街道门牌号 this.formData.shopAddrExt = address; // 给input框赋值 }); }, // 根据输入的地址定位获取当前经纬度/根据当前地址获取经纬度 inputShopAddr(inputValue){ this.geoCoder.getPoint(inputValue, (point) => { let latLng = { longitude: point.lng, latitude: point.lat } this.setCenterZoom(latLng);// 更改地图显示中心点 this.setIcon(latLng);// 创建点坐标 }) }, // 选择经营地区 regionChange (data) { console.log(data); let province = data.province ? data.province.value : ''; let city = data.city ? data.city.value : ''; let area = data.area ? data.area.value : ''; this.formData.businessArea = province + city + area; this.inputShopAddr(this.formData.businessArea); } } } </script>
上一篇:Win10 Edge提示兼容性问题打不开|解决浏览器兼容性问题


下一篇:在Mac系统下搭建Selenium环境并驱动Chrome浏览器