用vue-amap如何实现依据地址回显地图并标记
Admin 2022-07-13 群英技术资讯 822 次浏览
实现了地图选址功能后,现在来实现一个根据地址回显地图并标记的功能,效果图如下:
直接上代码:
main.js中引入
import Vue from 'vue' import VueAMap from 'vue-amap' import App from './App' import router from './router' Vue.config.productionTip = false localStorage.clear(); Vue.use(VueAMap) VueAMap.initAMapApiLoader({ //高德的key key: "cc644a48b701c256e9a827f068743fdd", // 插件集合 plugin: [ "AMap.Autocomplete",// 输入提示插件 "AMap.PlaceSearch",// POI搜索插件 "AMap.Scale",// 右下角缩略图插件 比例尺 "AMap.OverView",// 地图鹰眼插件 "AMap.ToolBar",// 地图工具条 "AMap.MapType",// 类别切换控件,实现默认图层与卫星图、实施交通图层之间切换的控制 "AMap.PolyEditor",// 编辑 折线多,边形 "AMap.CircleEditor",// 圆形编辑器插件 "AMap.Geolocation", // 定位控件,用来获取和展示用户主机所在的经纬度位置 "AMap.Geocoder",// 地理编码与逆地理编码服务,用于地址描述与坐标间的相互转换 "AMap.AMapUI",// UI组件 ], v: "1.4.4", uiVersion: "1.0.11" // 版本号 }); /* eslint-disable no-new */ new Vue({ el: '#app', router, components: { App }, template: '<App/>' })
调用showMap组件的文件
<template> <div class="myIndexWrap"> <!-- 根据地址信息显示地图位置 --> <div class="addrMapWrapper"> <h3>根据地址信息显示地图位置</h3> <div class="addrWrapper"> <p>{{selAddr}}</p> <ShowMap class="showMapBox" :selAddr="selAddr"/> </div> </div> </div> </template>
<script type='text/ecmascript-6'> import ShowMap from "@/components/ShowMap.vue";//地图标记 export default { components: { ShowMap }, data() { return { selAddr:'江苏省南京市雨花台区新华汇B2座', }; }, }; </script>
<style lang='scss' scoped> .myIndexWrap { width: 1200px; min-height: 800px; height: auto; border: 1px solid #000; display: flex; flex-flow: column; h3 { padding-left: 50px; } // 地图标记 .addrMapWrapper { .addrWrapper{ margin-left: 50px; } } } </style>
ShowMap.vue
<template> <div class="showMapWrapper"> <el-amap vid="map" class="amap-box" :zoom="zoom" :plugin="plugin" :events="events" :center="center" > <el-amap-marker vid="marker" :position="center" :label="label"></el-amap-marker> </el-amap> </div> </template>
<script type='text/ecmascript-6'> export default { components: {}, props:{ selAddr:{ type:String, default:'' } }, data() { let self = this; return { zoom: 18, lng: 0, lat: 0, loaded: false, address: this.selAddr, //mark的时候显示tip label:{ content:this.selAddr, offset:[10,12] }, center: [0,0], //插件集合 plugin: [ //工具条 { pName: "ToolBar", positon: "LB" }, ], events: { init(map) { // 这里通过高德 SDK 完成。 var geocoder = new AMap.Geocoder({ radius: 1000, extensions: "all", city: "全国" }); geocoder.getLocation(self.address, (status, result) => { if (status === "complete" && result.geocodes.length) { let lnglat = result.geocodes[0].location self.lng = lnglat.lng; self.lat = lnglat.lat; self.center = [self.lng, self.lat]; } }); } } }; }, }; </script>
<style lang='scss' scoped> .showMapWrapper { width: 500px; height: 500px; border: 1px solid #999; } </style>
大功告成~
补充知识:vant 中 AddressEdit 地址编辑 设置手机号格式校验
使用AddressEdit 组件中的 tel-validator 手机号格式校验API
添加 :tel-validator=“validator”
<VanAddressEdit :area-list="areaList" :address-info="addressInfo" :show-delete="Boolean(editId)" show-postal :is-saving="isSaving" :is-deleting="isDeleting" save-button-text="保存并使用" delete-button-text="删除收货地址" @save="onSave" @delete="onDelete" :tel-validator="validator" >
在methods中用正则设置需要的手机号格式
methods: { validator(e) { console.log(e); let myreg1 = /^[1][3,4,5,7,8][0-9]{9}$/; let myreg2 = /^[2][3,4,5,7,8][0-9]{6}$/; if (!myreg1.test(e) && !myreg2.test(e)) { console.log("手机号错误"); return false; } else{ console.log('手机号正确') return true } }, }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录ant design vue的form表单取值官方中有以下两种取值方式ant design of vue 学习之表单formv-decorator(表单验证,内置绑定,初始值)数据获取与填充表单实例ant design vue的form表单取值官方中有以下两种取值方式因为不是很熟悉,所以还是查了文档找了一下使用方式
本篇文章带大家了解一下Angular中的5种类(class)装饰器,希望对大家有所帮助!
这篇文章主要给大家介绍Vue列表组件,多选列表组件是vue的基本组件,我们也会常用到,但很多初学者对于vue列表组件可能不是很了解,因此,下面就和大家详细说说Vue多选列表组件。
node的异步机制是基于“事件”的,所有的I/O、网络通信、数据库查询都以非阻塞的方式执行,返回结果由事件循环来处理。Node在同一时刻只会处理一个事件,完成后立即进入事件循环检查后面事件。这样CPU和内存在同一时间集中处理一件事,同时尽量让耗时的I/O等操作并行执行。
这篇文章给大家分享的是JS中的prototype的相关内容。JavaScript中prototype是指javascript的原型对象,那么prototype如何来使用呢?文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008