插入高德地图的过程:

1.在HTML 页面中引入高德地图 JS API 的 JS文件
2.获取到 DOM 元素
3.将其作为容器,连同其它参数,传递给 new AMap.Map,创建一个地图实例
5.往地图里加入更多的元素

官方JS API文档地址 https://lbs.amap.com/api/javascript-api/summary/
官方JS API实例地址 https://lbs.amap.com/demo/javascript-api/example/marker/custom-icon-content

一、引入高德地图

  1. 申请key
在高德官网,申请key值。
  1. index.html文件中加入
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key='申请的key&plugin=AMap.PolyEditor,AMap.DistrictSearch,AMap.Autocomplete"></script>

注意:引入高德的js代码要放在head部分,不能放在尾部,否则会报错: “AMap is not defined”。
3.

二、地图组件渲染


<!--
* @description: 地图搜索选地址,点点位选地址
* @fileName: MapLayouts.vue
* @author: zhanggoudan
* @date: 2021/07/05 09:36:54
* @引入: import MapLayout from "@/components/mapLayouts/MapLayouts.vue";
* @使用: 子组件绑定ref="map"
* @地图获取点位和地址:  1. getMapData(mapData)  地图点击点位自动调用该方法 mapData为点位信息,数据格式:{address, lat, lng}
* @地图设置点位和地址:  2. setMapData  通过父组件调用子组件方法形式设置点位 调用方式 this.$refs.map.setMapData({address, lat, lng});
!--><template><div class="maplayouts"><inputid="mapInput"class="mapInput"v-model="mapData.address"v-if="inputVisible"placeholder="请输入地址搜索"/><div class="container" id="map" :style="{ height: height + 'px' }"></div></div>
</template><script>
import icon from "@/assets/icon.png";
export default {props: {// 地图高度height: {type: Number,default: 600,},// 是否启用搜索框inputVisible: {type: Boolean,default: true,},// 地图初始化层级mapInitZoom:{type:Number,default:12,},// 初始化中心点位mapInitCenter:{type:Array,default:function() {return [115.988491, 36.477378];}},},data() {return {mapData: {address: "",lng: "",lat: "",},};},mounted() {this.init();},methods: {init() {this.initMap();},//地图绘制initMap() {this.map = new AMap.Map("map", {resizeEnable: true,zoom: this.mapInitZoom,center: this.mapInitCenter,mapStyle: "amap://styles/4886817cd43fb9d6f022ba1b762e3dc3",});let _that = this;// 点击点位this.map.on("click", (e) => {AMap.service("AMap.Geocoder", function () {let geocoder = new AMap.Geocoder({city: "", //城市,默认:“全国”});//地图上所标点的坐标var lnglatXY = [e.lnglat.getLng(), e.lnglat.getLat()];geocoder.getAddress(lnglatXY, function (status, result) {if (status === "complete" && result.info === "OK") {let addressinfo = result.regeocode.addressComponent;let address =addressinfo.city +addressinfo.street +addressinfo.township +addressinfo.streetNumber;let lng = e.lnglat.getLng();let lat = e.lnglat.getLat();_that.setMap({ address, lng, lat });}});});});if (this.inputVisible) {// 输入框选择let autoOptions = {input: "mapInput",};let auto = new AMap.Autocomplete(autoOptions);AMap.event.addListener(auto, "select", (e) => {let address = e?.poi?.name;let lng = e?.poi?.location?.lng;let lat = e?.poi?.location?.lat;_that.setMap({ address, lng, lat });});}},// 绘制点位setMap({ address, lng, lat }) {if (this.marker) {this.map.remove(this.marker);}this.marker = new AMap.Marker({icon: icon,map: this.map,position: [lng, lat],offset: new AMap.Pixel(-11.5, -11),});this.map.setCenter([lng, lat]);this.marker.setMap(this.map);this.mapData = {address,lng,lat,};this.getMapData(this.mapData);},// 地图数据参数传递给父组件getMapData(mapData) {this.$parent.getMapData(mapData);},// 父组件调用子组件方法setMapData(mapData) {this.setMap(mapData);},},
};
</script><style scoped>
.container {width: 100%;height: 500px;position: relative;}
#mapInput {height: 35px;}
</style>

注意:

注    意:   当使用ele ui框架会存在 this.$parent.getMapData is not function 报错问题解决办法:    将this.$parent.getMapData(mapData) 更改为this.$emit('getMapData',mapData) 原   因:      控制台输出this.parent发现找不到自己定义的component的父组件定需要通过 this.$parent.$parent.getMapData() 才可以可以调用到.

VUE项目中高德地图选择坐标和输入搜索功能相关推荐

  1. vue项目使用高德地图的定位及关键字搜索功能

    1.首先在index.html引入高德地图的秘钥.如图: 注意:如果使用关键字搜索功能要加上 plugin=AMap.Autocomplete,AMap.PlaceSearch,否则功能无法使用,并会 ...

  2. vue项目中高德地图的注册及使用

    1.创建应用 点击进入高德地图个人开发的注册:https://lbs.amap.com/dev/id/personal 然后可以登录支付宝进行认证. 注册完毕之后,点击右上角的控制台 点击右上角的创建 ...

  3. vue项目中高德地图根据城市名定位到城市中心位置,并在该位置做标记

    先看效果: 首先记得引入高德地图,并且要带上&plugin=AMap.DistrictSearch,如下: <script type="text/javascript" ...

  4. vue项目中 高德地图总是出不来的问题

    创建地图是个很简单的API,但是地图时不时的出不来,这个问题就严重了,一时真查不出原因. 经过无数的测试,发现地图需要规矩化 问题 vue是单页面应用,两个id一样的map,会出现出不来的问题 具体为 ...

  5. vue项目使用高德地图

    vue项目使用高德地图-部分功能介绍 在此做个笔记,引入方式使用了高德2.0 loadsh的加载方式 1.引入高德地图方式-NPM npm i @amap/amap-jsapi-loader --sa ...

  6. vue项目使用高德地图定位当前地址

    vue项目使用高德地图定位当前地址 一.在项目中安装vue-amap插件 二.页面代码 三.data数据 一.在项目中安装vue-amap插件 1.最终效果 2.安装命令 npm install vu ...

  7. Vue项目中用高德地图实现定位

    说明:本文主要是介绍如何在Vue项目中接入百度地图并定位当前城市,更深层次的内容稍后有空整理. 可能还有更牛的实现方案,目前我这里记录的是我自己跑通的一个版本,希望对你有所帮助,仅供参考. Vue项目 ...

  8. 出行助手Vue项目中高德API的使用

    本文章是出行助手项目使用高德API的一些经验,见程序代码及注释, 详情请查看高德API 高德地图初始化加载定位到当前城市(具体位置): 设置一个div挂载高德地图:<div id="m ...

  9. vue项目引入高德地图

    简单叙述 首先需要了解一个小细节: 就是定位获取到的坐标,直接在地图组件或者在位置标注中使用的时候,位置可能有一定的偏差. 还有一个点需要注意的就是: 微信开发者工具的定位不准确,无法获取想要的位置. ...

  10. vue 项目中百度地图 API 使用流程

    文章目录 一.在百度地图开放平台注册账号并登录.认证 二.创建 ak 三.项目使用 四.丰富的功能 一.在百度地图开放平台注册账号并登录.认证 1.网址:http://lbsyun.baidu.com ...

最新文章

  1. MySQL 分库分表及其平滑扩容方案
  2. 我们讨论的是《战争之城》的一个简单版本。如果地图上只有空旷的空间,河流,钢墙和砖墙。你的任务是尽快得到奖金,假设没有敌人会打扰你(见下图) 你的坦克不能穿过河流和墙壁,但它可以通过射击摧毁砖墙。当你击
  3. VMware开启NAT模式/仅主机模式后主机ping不通虚拟机的问题
  4. 线性链表java实现_java实现线性单链表
  5. 小新pro13 重装注意_新款小新pro 13注意什么?买前必读
  6. ajax child,如何在ajax上使用this.children
  7. PSP3000破解教程
  8. 如何注册ocx文件。。。
  9. 智障Sloth的第108次启动mininet链接控制器失败的原因
  10. 转载:王垠 的《完全用Linux工作》
  11. mac 重置mysql root密码_Mac下忘记Mysql root密码重置
  12. 大联大品佳集团推出基于Audiowise产品的蓝牙5.1助听(Hearing Device)耳机方案
  13. 电流感应放大器应用技术要点
  14. dns服务器地址显示fec0,DNS服务器地址为fec0
  15. harmonyOS系统是安卓,HarmonyOS华为操作系统
  16. D-Link的DIR-655无线网络firmware升级(一)
  17. 18条心理学定律,值得一看
  18. Doris新增字段后立马向新增字段updat和insert显示没有该新增字段或者新增字段没有updata和insert数据
  19. HIMCM2019题目
  20. 低轨卫星通信遥感融合:架构、技术与试验

热门文章

  1. OpenHarmony代码下载编译流程记录
  2. vue中用cdn引入优化vender.js大小,和cdn 引入mint-ui的问题
  3. UGUI_03_补充之_Image的属性(image type这个属性simple、Sliced、tiled、filled样式详解)
  4. 巨象指纹浏览器的反追踪技术原理
  5. 大数据带来了哪些改变
  6. MySQL必知必会,我的MySql复习宝典
  7. 【数据库 · MySQL】听韩顺平老师课草稿
  8. 地址转经纬度(百度)function
  9. “139邮箱”练好内功比发电影票更重要
  10. spring中的aop的xml配置方式简单实例