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 相关文章推荐
超轻量级的基于jquery的三级展开列表
Apr 26 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
详解JS函数重载
Dec 04 Javascript
js读取csv文件并使用json显示出来
Jan 09 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
如何用js判断dom是否有存在某class的值
Feb 13 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
Mar 27 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
Mar 29 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
Nov 01 Javascript
vue addRoutes路由动态加载操作
Aug 04 Javascript
JavaScript 声明私有变量的两种方式
Feb 05 Javascript
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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
js计数器代码
2006/11/04 Javascript
js 文件引入实现代码
2010/04/23 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
详解VUE中的插值( Interpolation)语法
2020/10/18 Javascript
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
python基于TCP实现的文件下载器功能案例
2019/12/10 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python实现淘宝秒杀功能的示例代码
2021/01/19 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
Python如何定义一个函数
2015/09/01 面试题
会计实习生工作总结的自我评价
2013/10/07 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js