vue-amap根据地址回显地图并mark的操作


Posted in Javascript onNovember 03, 2020

实现了地图选址功能后,现在来实现一个根据地址回显地图并标记的功能,效果图如下:

vue-amap根据地址回显地图并mark的操作

直接上代码:

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
   }
  },
 }

以上这篇vue-amap根据地址回显地图并mark的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
30个精美的jQuery幻灯片效果插件和教程
Aug 23 Javascript
JQuery 操作/获取table具体代码
Jun 13 Javascript
Javascript中使用parseInt函数需要注意的问题
Apr 02 Javascript
深入剖析javascript中的exec与match方法
May 18 Javascript
对象转换为原始值的实现方法
Jun 06 Javascript
js 声明数组和向数组中添加对象变量的简单实例
Jul 28 Javascript
详解JavaScript跨域总结与解决办法
Oct 31 Javascript
Vuex 入门教程
Jan 10 Javascript
使用JS模拟锚点跳转的实例
Feb 01 Javascript
vue init webpack 建vue项目报错的解决方法
Sep 29 Javascript
微信小程序如何获取手机验证码
Nov 04 Javascript
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
ant-design-vue中tree增删改的操作方法
Nov 03 #Javascript
Vue+Vant 图片上传加显示的案例
Nov 03 #Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
Nov 03 #Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 #Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 #Javascript
vue缓存之keep-alive的理解和应用详解
Nov 02 #Javascript
详解vue-router的导航钩子(导航守卫)
Nov 02 #Javascript
You might like
php中实现记住密码自动登录的代码
2011/03/02 PHP
php的一个简单加密解密代码
2014/01/14 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
Ionic项目中Native Camera的使用方法
2017/06/07 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
JS字符串常用操作方法实例小结
2019/06/24 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
Python是编译运行的验证方法
2015/01/30 Python
Python实现单词拼写检查
2015/04/25 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
2019/08/13 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
python对一个数向上取整的实例方法
2020/06/18 Python
C#笔试题集合
2013/06/21 面试题
优秀中学生事迹材料
2014/01/31 职场文书
网络技术专业求职信
2014/05/02 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
学校2014年度工作总结
2014/12/06 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
归元寺导游词
2015/02/06 职场文书
教师创先争优承诺书
2015/04/27 职场文书