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

相关文章

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

C++20管道运算符的实现示例

《C++20管道运算符的实现示例》本文简要介绍C++20管道运算符的使用与实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录标准库的管道运算符使用自己实现类似的管道运算符我们不打算介绍太多,因为它实际属于c++20最为重要的

Java easyExcel实现导入多sheet的Excel

《JavaeasyExcel实现导入多sheet的Excel》这篇文章主要为大家详细介绍了如何使用JavaeasyExcel实现导入多sheet的Excel,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录1.官网2.Excel样式3.代码1.官网easyExcel官网2.Excel样式3.代码

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是