1.引入

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.14&key=xxxxxxxxxxxxxx"></script>

2.初始化地图

let that = this;

that.map = new AMap.Map('carContainer', {

resizeEnable: true,

})

// 为地图注册click事件获取鼠标点击出的经纬度坐标

that.map.on('click', function (e) {

var lnglatXY = [e.lnglat.getLng(), e.lnglat.getLat()];

that.init(lnglatXY)

});

3.地址获取经纬度

let _this = this;

window.AMap.plugin('AMap.PlaceSearch', function () {

var autoOptions = {

city: '全国',

map: _this.map, // 展现结果的地图实例

pageSize: 1, // 单页显示结果条数

pageIndex: 1, // 页码

autoFitView: true // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围

};

var placeSearch = new window.AMap.PlaceSearch(autoOptions);

placeSearch.search(_this.formInline.text, function (status, result) {

// 搜索成功时,result即是对应的匹配数据

if (status == 'complete') {

if (result.poiList.pois.length = 0) {

ElMessage.error('没有查询到对应的地址');

}else{

let lng = result.poiList.pois[0].location.lng;

let lat = result.poiList.pois[0].location.lat

}

} else if (status == 'no_data') {

ElMessage.error('没有查询到对应的地址');

}

});

});

4.经纬度获取地址

AMap.plugin('AMap.Geocoder', function () {

var geocoder = new AMap.Geocoder({

radius: 1000,

extensions: "all"

});

geocoder.getAddress(lnglatXY, function (status, result) {

if (status === 'complete' && result.info === 'OK') {

var address = result.regeocode.formattedAddress;

that.address = address  //兑换地址

that.$emit('getaddress', that.address, lnglatXY)

} else {

ElMessage.error('无地址,请重新选择');

}

});

// 清除所有标记

that.map.clearMap();

var marker = new AMap.Marker();

that.map.add(marker);

marker.setPosition(lnglatXY);

})

完整代码

<template><el-dialogtitle="客户地址"v-model="Visible":close-on-click-modal="false":close-on-press-escape="false"width="1000px"@close="addressClose"><div><el-form:inline="true":model="formInline"class="demo-form-inline"><el-form-itemlabel="查询"v-if="0"><el-inputv-model="formInline.text"placeholder="请输入要搜索的地址"></el-input></el-form-item><el-form-item><el-inputv-model="formInline.text"placeholder="请输入要搜索的地址"style="width:500px;"clearable></el-input></el-form-item><el-form-item><el-buttontype="primary"@click="onQuery">查询</el-button></el-form-item></el-form><div id="carContainer"></div></div></el-dialog>
</template><script>
import AMap from 'AMap'
import { ElMessage } from "element-plus";
export default {props: {locationVisible: {type: Boolean,default: true},customerAddress: {type: String,default: ''}},emits: ['getaddress', 'addressClose'],//这里需要写出定义的事件名data () {return {formInline: {text: ''},map: null,address: '',Visible: false};},watch: {locationVisible (val) {if (val) {this.Visible = true// 在这里使用$nextTick初始化地图插件即可this.$nextTick(() => {this.ready()});} else {this.Visible = false}},customerAddress (val) {this.formInline.text = val}},mounted () {window.onLoadMap = () => {this.ready();};},methods: {addressClose () {this.$emit('addressClose')},// 查询onQuery () {this.init1()},// 初始化ready () {let that = this;that.map = new AMap.Map('carContainer', {resizeEnable: true,})// 为地图注册click事件获取鼠标点击出的经纬度坐标that.map.on('click', function (e) {var lnglatXY = [e.lnglat.getLng(), e.lnglat.getLat()];that.init(lnglatXY)});if (this.formInline.text) {that.onQuery()}},// 地址获取经纬度  // let lng = result.poiList.pois[0].location.lng;// let lat = result.poiList.pois[0].location.lat;// _this.longAndLat = lng + ',' + lat;// _this.addMarker(lng, lat);init1 () {let _this = this;window.AMap.plugin('AMap.PlaceSearch', function () {var autoOptions = {city: '全国',map: _this.map, // 展现结果的地图实例pageSize: 1, // 单页显示结果条数pageIndex: 1, // 页码autoFitView: true // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围};var placeSearch = new window.AMap.PlaceSearch(autoOptions);placeSearch.search(_this.formInline.text, function (status, result) {// 搜索成功时,result即是对应的匹配数据if (status == 'complete') {if (result.poiList.pois.length = 0) {ElMessage.error('没有查询到对应的地址');}} else if (status == 'no_data') {ElMessage.error('没有查询到对应的地址');}});});},//经纬度获取地址init (lnglatXY) {var that = thisAMap.plugin('AMap.Geocoder', function () {var geocoder = new AMap.Geocoder({radius: 1000,extensions: "all"});geocoder.getAddress(lnglatXY, function (status, result) {if (status === 'complete' && result.info === 'OK') {var address = result.regeocode.formattedAddress;that.address = address  //兑换地址that.$emit('getaddress', that.address, lnglatXY)} else {ElMessage.error('无地址,请重新选择');}});// 清除所有标记that.map.clearMap();var marker = new AMap.Marker();that.map.add(marker);marker.setPosition(lnglatXY);})},}
}
</script><style lang="scss" scoped>
.el-dialog {#carContainer {width: 100%;height: 500px;}
}
</style>

vue 高德地图API根据地址获取经纬度/根据经纬度获取地址相关推荐

  1. Vue+高德地图API的使用(定位打卡)

    接上之前的项目 Vue+高德地图API的使用 Vue+高德地图API的使用(插件的使用) 1.页面布局 绘制页面 <div class="Clock"><!-- ...

  2. 利用vue+高德地图API 实现用户的运动轨迹

    利用vue+高德地图API 实现用户的运动轨迹 高德地图网址:https://lbs.amap.com/api/jsapi-v2/guide/abc/prepare 任务一:实现地图显示 先完成准备工 ...

  3. Vue+高德地图api

    文章目录 前言 一.准备工作 1.申请应用 2.引入 3.创建地图 二.使用高德地图 1.覆盖物 (1) 点标记 (2) 海量点标记 (3) 轨迹回放 2.矢量图形 (1) 多边形 3.图层 (1) ...

  4. vue 高德地图api爬坑之路(一)初始化

    由于使用vue-amap插件有点问题,所以使用了原生高德地图api. 集成: public/index.html 添加 <script type="text/javascript&qu ...

  5. Vue+高德地图API的使用

    浏览器搜索 高德开放平台 或者 高德地图API 链接地址:https://lbs.amap.com/ 二.创建Vue项目 Vue2跟Vue3的差别不大,用哪个都可以 使用npm 安装 高德地图 按 N ...

  6. vue 高德地图api爬坑之路(三)Autocomplete 和 PlaceSearch

    添加页面控件 <div class="search-div" ><el-input id="tipInput" v-model="i ...

  7. Vue+高德地图API的使用(插件的使用)

    接上次地图显示 官方文档:根据自己需求引入想要的插件 在AMapLoader.load中的plugins引入你所需要的插件 //这里是我引入的插件 plugins: ["AMap.ToolB ...

  8. Vue+高德地图API的使用(电子围栏)

    页面绘制 <template><!-- 围栏数据以表格的形式展示 --><el-table :data="fencingData" border st ...

  9. html调用高德地图得到城市,高德地图API获取行政区域

    高德地图API提供的行政区划查询,可以获取到行政区域的区号.城市编码.中心点.边界.下辖区域的详细信息.基于该工具进行扩展,对边界数据做转换处理,保存为GeoJson格式文件,方便使用.现已可以单个城 ...

最新文章

  1. Visual Studio工具栏中无法选择调试设备
  2. 数据库管理专才四步走
  3. Effective C++ 11 在operator=中处理“自我赋值” 笔记
  4. 使用nginx动静分离后,druid被拦截的解决方法
  5. JavaScript 对引擎、运行时、调用堆栈的概述理解
  6. 如何简单的测试kubernetes的dns add-ons是否工作正常?
  7. 2月国内操作系统市场份额:Windows XP持续下降
  8. Apress Pro Android 2
  9. Mysql常用命令(二)
  10. CVPR 2020 细粒度分类挑战赛冠军方案:数据增强+知识蒸馏,效果大幅提升
  11. JS设计模式——10.门面模式
  12. Python之石头剪刀布
  13. 3.6. Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota
  14. asp.net mvc源码分析-Action篇 DefaultModelBinder
  15. 1小时教你理解HTTP,TCP,UDP,Socket,WebSocket
  16. android html片段,详解Android WebView加载html片段
  17. SAR图像超分辨技术
  18. 英语语法快速入门1--简单句(附思维导图)
  19. Linux项目实训一
  20. cd 命令行进入目标文件夹

热门文章

  1. 华为鸿蒙太空人壁纸,华为太空人动态图片大全
  2. js返回当前时间函数
  3. JavaScript设计模式之模板方法模式
  4. Python基础入门篇【2】--python脚本结构
  5. 数据分析数据挖掘的步骤
  6. qt opengl lesson5 绘制3d立体旋转图形
  7. 央视为什么要剑指谷歌
  8. Redis分片集群(详解+图)
  9. Redis分片的实现
  10. 前瞻、后顾、负前瞻、负后顾用法