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 相关文章推荐
JavaScript delete 属性的使用
Oct 08 Javascript
document.onreadystatechange事件的用法分析
Oct 17 Javascript
jquery中one()方法的用法实例
Jan 16 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
socket.io学习教程之深入学习篇(三)
Apr 29 Javascript
ES6中新增的Object.assign()方法详解
Sep 22 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
微信小程序 自定义弹窗实现过程(附代码)
Dec 05 Javascript
JavaScript设计模式之原型模式详情
Jun 21 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
如何使用PHP中的字符串函数
2006/10/09 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
2019/10/23 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
2019/09/30 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
Pytorch 高效使用GPU的操作
2020/06/27 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
人事主管的岗位职责
2013/11/16 职场文书
安全生产标语
2014/06/06 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
2015党建工作简报
2015/07/21 职场文书
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
sass 常用备忘案例详解
2021/09/15 HTML / CSS
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python