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

相关文章

Redis分片集群的实现

《Redis分片集群的实现》Redis分片集群是一种将Redis数据库分散到多个节点上的方式,以提供更高的性能和可伸缩性,本文主要介绍了Redis分片集群的实现,具有一定的参考价值,感兴趣的可以了解一... 目录1. Redis Cluster的核心概念哈希槽(Hash Slots)主从复制与故障转移2.

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

使用Python实现一键隐藏屏幕并锁定输入

《使用Python实现一键隐藏屏幕并锁定输入》本文主要介绍了使用Python编写一个一键隐藏屏幕并锁定输入的黑科技程序,能够在指定热键触发后立即遮挡屏幕,并禁止一切键盘鼠标输入,这样就再也不用担心自己... 目录1. 概述2. 功能亮点3.代码实现4.使用方法5. 展示效果6. 代码优化与拓展7. 总结1.

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化