vue使用vue-amap插件(高德地图插件实现定位、搜索、marker标记点)

本文主要是介绍vue使用vue-amap插件(高德地图插件实现定位、搜索、marker标记点),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现简单功能记录一下,有问题的话麻烦指出谢谢!
在这里插入图片描述
在这里插入图片描述
需求:进入地图定位当前位置,并标记,点击位置显示标记点,上一个标记点消失,搜索框输入地址,显示位置并标记。

1.在高德开发者平台申请key;
2.安装vue-amap;
npm install vue-amap --save
3.在项目main.js中引入vue-amap

import VueAMap from 'vue-amap';   //引入高德
VueAMap.initAMapApiLoader({key: '写入申请的key',//插件集合plugin: ['AMap.Geolocation',  //定位空间,用来获取和展示用户主机所在的经纬度位置' AMap.Autocomplete ',  //输入提示插件' AMap.PlaceSearch ', //POI搜索插件' AMap.Scale ',   //右下角缩略图插件,比例尺' AMap.OverView ', //地图鹰眼插件' AMap.ToolBar ',  //地图工具条' AMap.MapType ',  //类别切换空间,实现默认图层与卫星图,实施交通层之间切换的控制' AMap.PolyEditor ', //编辑 折线多边形' AMap.CircleEditor ',"AMap.Geocoder"     //地图编码]
});

4.在需要地图的组件中调用

<template>
<div class="map_address"><div class="address-wrapper" :style="{width:'100%',height:'100%'}"><el-amap-search-boxclass="search-box":search-option="searchOption"         :on-search-result ="onSearchResult"   ><!-- 搜索条件 是个对象 属性是city城市名,citylimit:false; 搜索回调函数 --></el-amap-search-box><el-amap vid="amap" class="amap-demo"  :amap-manager="amapManager" :plugin="plugin"  :events="events"   :center="center" :zoom="zoom"><!-- 点标记在地图上显示的位置,默认为地图中心点, --><el-amap-markerv-for="(marker,index) in markers":key ="'marker'+index":position ="marker" > </el-amap-marker></el-amap></div>
</div>
</template><script>
//引入获取实例
import {AMapManager} from "vue-amap"
let amapManager= new AMapManager();
let Geocoder;     //先声明变量
export default {data(){const self = this;return{center:[0, 0],loaded:false,zoom: 17,input:"",lng:0,lat:0,amapManager,searchOption: {city: "全国",citylimit: false,},  markers: [],          //标记events:{init:(o)=>{o.getCity((result)=>{console.log(result)})},click:(e)=>{self.center = [e.lnglat.lng, e.lnglat.lat];console.log(self.center)self.markers=[];self.markers.push(self.center)Geocoder.getAddress(self.center, function (status, result) { //根据坐标获取位置if (status === "complete" && result.info === "OK") {console.log(result.regeocode.formattedAddress)self.input = result.regeocode.formattedAddress;document.querySelector(".search-box-wrapper input").value = self.input;}})}},plugin:[{enableHighAccuracy:true,   //是否使用高精度定位,默认truetimeout:100,               //超过10秒后停止定位,默认:无穷大convert:true,          //自动偏移后的坐标为高德坐标,默认:trueshowButton:true,       //显示定位按钮,默认:truebuttonPosition:'RB',  //定位按钮停靠位置,默认'LB',左下角showMarker:true,      //定位成功后在定位到的位置显示标记,默认:trueshowCircle:true,      //定位成功后用圆圈表示定位精度范围,默认:truepanToLocation:true,   //定位成功后将定位到的位置作为地图中心点,默认truezoomToAccuracy:true,   //定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:falseextensions:"all",pName:"Geolocation",     //AMap-Geolocation 定位插件events: {init(o) {// o 是高德地图定位插件实例o.getCurrentPosition((status, result) => {console.log(result.position)if (result && result.position) {self.lng = result.position.lng;              //设置经度self.lat = result.position.lat;              //设置纬度self.center = [self.lng,self.lat];          //设置坐标self.markers.push(self.center)              //获取当前定位并存入标记中显示标记点self.loaded = true;                          //loadself.zoom = 14;self.$nextTick();                            //页面渲染好后             }})}}},//Geocoder编码:根据地理名称来获得地点的经纬度{pName:"Geocoder",events:{init:(o)=>{Geocoder = o; // o 则是AMap.Geocoder的实例 对外部的Geocoder变量进行赋值,在任何地方就都可以使用//data里的events中使用了Geocodero.getAddress(self.center, function (status, result) { //根据坐标获取位置if (status === "complete" && result.info === "OK") {self.input = result.regeocode.formattedAddress;document.querySelector(".search-box-wrapper input").value = self.input;  } })}}}]}},methods:{//点击搜索后触发的事件onSearchResult(pois){console.log(pois)     this.input = document.querySelector('.search-box-wrapper input').value this.center = [pois[0].lng,pois[0].lat]        //选择了第一个值this.markers = [];    //标记点先清空  this.markers.push([pois[0].lng,pois[0].lat])   //把搜索的位置的第一个值存入标记中并显示标记点console.log(this.markers);}}}</script><style scoped lang="less">
.map_address{height:100vh;
}
.address-wrapper{display:flex;flex-direction:column;
}
.search-box{width:100vw;height:40px;
}
.amap-demo{flex:1;height:100vh;
}
</style>

文档:https://www.wenjiangs.com/doc/fsjxllsq
文章借鉴:https://blog.csdn.net/zjingru/article/details/111191320

//直接cv

这篇关于vue使用vue-amap插件(高德地图插件实现定位、搜索、marker标记点)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/772775

相关文章

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

Golang中map缩容的实现

《Golang中map缩容的实现》本文主要介绍了Go语言中map的扩缩容机制,包括grow和hashGrow方法的处理,具有一定的参考价值,感兴趣的可以了解一下... 目录基本分析带来的隐患为什么不支持缩容基本分析在 Go 底层源码 src/runtime/map.go 中,扩缩容的处理方法是 grow

Go 1.23中Timer无buffer的实现方式详解

《Go1.23中Timer无buffer的实现方式详解》在Go1.23中,Timer的实现通常是通过time包提供的time.Timer类型来实现的,本文主要介绍了Go1.23中Timer无buff... 目录Timer 的基本实现无缓冲区的实现自定义无缓冲 Timer 实现更复杂的 Timer 实现总结在

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件

《如何使用Docker部署FTP和Nginx并通过HTTP访问FTP里的文件》本文介绍了如何使用Docker部署FTP服务器和Nginx,并通过HTTP访问FTP中的文件,通过将FTP数据目录挂载到N... 目录docker部署FTP和Nginx并通过HTTP访问FTP里的文件1. 部署 FTP 服务器 (

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Python中配置文件的全面解析与使用

《Python中配置文件的全面解析与使用》在Python开发中,配置文件扮演着举足轻重的角色,它们允许开发者在不修改代码的情况下调整应用程序的行为,下面我们就来看看常见Python配置文件格式的使用吧... 目录一、INI配置文件二、YAML配置文件三、jsON配置文件四、TOML配置文件五、XML配置文件