高德地图实现-逆地理编码-输入提示-地图标点-实现车库管理

news2025/5/24 17:32:23

效果图:

1694686348588.png

我们将学习如何创建一个前端地图应用程序,该应用程序集成了高德地图API,允许用户进行地点搜索、选择和标记,以及执行逆地理编码以获取地址信息。我们将使用Vue.js框架来构建应用程序,并结合高德地图的功能来实现这些功能。

步骤1:准备工作

在开始之前,确保你已经注册并获得了高德地图API的密钥。你可以在高德地图开放平台注册并获取密钥。这个密钥将用于访问地图服务。

高德开放平台:

注册账号(https://lbs.amap.com/)) 申请小程序应用的 key
1694686534547.png
应用管理(https://console.amap.com/dev/key/app)) -> 我的应用 -> 创建新应用
1694686557538.png

步骤2:引入高德地图JavaScript API 在index.html添加以下代码

在Vue组件的**

	<script type="text/javascript">
	        window._AMapSecurityConfig = {
	            // serviceHost:'您的代理服务器域名或地址/_AMapService',  
	            // // 例如 :serviceHost:'http://1.1.1.1:80/_AMapService',
				securityJsCode: "你的安全秘钥",
	        }
	</script>
    <script type="text/javascript"
      src="http://webapi.amap.com/maps?v=1.4.15&key=你的key&plugin=AMap.MarkerClusterer,AMap.Autocomplete,AMap.Geocoder,AMap.DistrictSearch"></script>
    <style>

步骤3:创建Vue组件

在Vue.js应用程序中创建一个组件,用于处理地图功能。你可以使用以下模板作为起点:

<template>
  <div>
    <div class="search-container">
      <a-input v-model="searchKeyword" placeholder="输入关键字" style="width: 500px;"></a-input>
      <a-button @click="getAutoCompleteResults">搜索并定位</a-button>
    </div>
    <ul class="ul">
      <li class="li" v-for="(result, index) in autoCompleteResults" :key="index" @click="selectLocation(result)">
        {{ result.name }}
      </li>
    </ul>
    <div id="map" style="width: 100%; height: 400px;"></div>
  </div>
</template>

这个模板包括一个搜索输入框、一个搜索按钮、一个建议列表和一个地图容器。

步骤4:调用高德地图方法

   /**
     * 逆地理编码
     */
    getReverseGeocoding(location){  
       AMap.plugin('AMap.Geocoder', () => {
         const geocoder = new AMap.Geocoder({});
         var lnglat = [location.longitude,location.latitude]
         var lastlocation = {lng:location.longitude,lat:location.latitude}
         geocoder.getAddress(lnglat,  (status, result) => {
           if (status === 'complete' && result.info === 'OK') {
               // result为对应的地理位置详细信息
               var regeocode=result.regeocode
               this.mapobj = {
                 location: lastlocation,
                 city: regeocode.addressComponent.city,
                 formattedAddress: regeocode.formattedAddress,
               };  
               this.emitMapobjToParent();
           }
         })
       })

    },

 
    /**
     * 输入提示
     */
    getAutoCompleteResults() {
      if (this.searchKeyword) {
        // 使用高德地图的Autocomplete服务获取模糊查询的建议结果
        AMap.plugin("AMap.Autocomplete", () => {
          const autoComplete = new AMap.Autocomplete({});
          autoComplete.search(this.searchKeyword, (status, result) => {
            if (status === "complete" && result.info === "OK") {
              this.autoCompleteResults = result.tips;
            }
          });
        });
      } else {
        this.autoCompleteResults = [];
      }
    },

1. 逆地理编码 (getReverseGeocoding 方法)
这个方法的主要目的是将给定的经度和纬度坐标转换为地理位置信息,例如城市和格式化地址。以下是该方法的步骤:

  • 使用高德地图的 AMap.Geocoder 插件,首先创建了一个逆地理编码对象 geocoder
  • 将传递给方法的 location 参数解构为 longitudelatitude
  • 创建一个 lnglat 数组,其中包含经度和纬度信息。
  • 创建一个 lastlocation 对象,保存 location 的经纬度信息。
  • 调用 geocoder.getAddress(lnglat, callback) 方法来执行逆地理编码。callback 函数在逆地理编码完成后被调用。
  • callback 函数中,检查逆地理编码的状态 (status) 和信息 (result.info) 是否为 ‘complete’ 和 ‘OK’。只有在状态和信息都满足时才继续处理结果。
  • 如果逆地理编码成功,将结果中的地理位置详细信息保存在 regeocode 变量中。
  • 使用 regeocode 中的信息创建一个 mapobj 对象,包括位置 (location)、城市 (city) 和格式化地址 (formattedAddress)。
  • 最后,调用 emitMapobjToParent() 方法将 mapobj 传递给父组件,以供进一步处理或显示。

2. 输入提示 (getAutoCompleteResults 方法)
这个方法用于执行输入提示,根据用户输入的搜索关键词获取建议的地点列表。以下是该方法的步骤:

  • 首先,检查是否存在用户输入的搜索关键词 (this.searchKeyword)。
  • 如果搜索关键词存在,它创建了一个新的 AMap.Autocomplete 实例,该实例用于执行模糊查询。
  • 使用 autoComplete.search(this.searchKeyword, callback) 方法,发送搜索关键词并提供一个回调函数 callback
  • 在回调函数中,检查返回的状态 (status) 和信息 (result.info) 是否为 ‘complete’ 和 ‘OK’。只有在满足这两个条件时才继续处理结果。
  • 如果输入提示成功,将结果中的建议地点列表保存在 this.autoCompleteResults 中,以供用户界面显示。
  • 如果搜索关键词为空,它会清空 this.autoCompleteResults,以确保不显示旧的建议结果。

### 步骤5:完整代码 ```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010670.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET Upgrade Assistant 升级 .NET MAUI

.NET Upgrade Assistant 是一种可帮助您将应用程序升级到最新的 .NET版本 的工具&#xff0c;并且您可以使用这个工具将您的应用程序从旧平台&#xff08;例如 Xamarin Forms 和 UWP&#xff09;迁移到新的平台。此外&#xff0c;这个新版本的工具&#xff0c;可以让您在不更改…

C++ - map 和 set 使用介绍

简介 其实在map 和 set 的底层实现当中有差不多一半的 结构是使用 二叉搜索树来实现&#xff0c;关于二叉搜索树可以看下面这个篇博客&#xff1a;C - 搜索二叉树_chihiro1122的博客-CSDN博客 而 set 是 key 模型&#xff0c;他是直接按照 key 值大小来有规律的在 二叉搜索树当…

pyG教程

introduction中ShapeNet失效问题解决 首先用github中官方最新的shapenet.py中文提示手动下载数据压缩包 # In case shapenet.cs.stanford.edu is offline, try to download the data# from Kaggle instead (requires login):# https://www.kaggle.com/datasets/mitkir/shapene…

提升网速 网卡和驱动

去某宝下单了&#xff0c;是网卡和驱动的问题&#xff08;某宝说网卡和驱动是一个意思&#xff09;。以下是操作步骤。 更新驱动程序后从联想官网下载本台电脑对应的驱动 下载可以识别自己主机编号的软件-主机信息识别工具 然后获取编号 然后下载自己的有线网卡

探索装饰艺术的未来,留存传统的精髓

近一个世纪后&#xff0c;装饰艺术终于卷土重来。正如我们在全球新的项目、室内空间和家具中所看到的&#xff0c;那种令我们渴望20世纪初20年代繁荣时期的奢华和魅力。作为装饰艺术建筑和设计的独特身份一直在世界上继续启发着人们&#xff0c;那么从新的设计和现有设计的保留…

5.linux的定时任务调度crontab

一、定时任务调度crontab 1. 定时任务调度crond介绍 ①任务调度&#xff1a;系统在某个时间执行特定的命令和程序 ②任务调度分类&#xff1a;系统工作&#xff08;病毒扫描&#xff09;&#xff0c;用户工作&#xff08;备份mysql数据库&#xff09; 2.定时任务调度crond原…

C++项目实战——基于多设计模式下的同步异步日志系统-⑤-实用工具类设计

文章目录 专栏导读获取系统时间time介绍 getTime函数设计判断文件是否存在stat介绍exists函数设计 获取文件所在路径find_last_of介绍path函数设计 创建文件所在目录mkdir介绍find_first_of介绍函数createDirectory设计 实用工具类整理 专栏导读 &#x1f338;作者简介&#xf…

数据的真正价值是数据要素市场化开发

随着人工智能、互联网、物联网、大数据、云计算、区块链等新一代信息化、数字化技术的应用&#xff0c;各行各业都开始了新一轮的产业革命和转型升级。在这个过程中&#xff0c;数据伴随着信息化、数字化的推进越发变得重要&#xff0c;到了2020年直接成为了继土地、劳动力、资…

人工智能AI 全栈体系(三)

第一章 神经网络是如何实现的 一个神经网络用不同的数据做训练&#xff0c;就可以识别不同的东西&#xff0c;那么神经网络究竟是怎么训练的&#xff1f; 三、神经网络是如何训练的&#xff1f; 1. 小朋友如何认识小动物&#xff1f; 小时候&#xff0c;每当看到一个小动物时…

R3LIVE源码解析(10) — R3LIVE中r3live_vio.cpp文件

目录 1 r3live_vio.cpp简介 2 r3live_vio.cpp源码解析 1 r3live_vio.cpp简介 R3LIVE主要的公式推导在VIO上&#xff0c;所以我们来细细的分析这部分的功能。R3LIVE将VIO分成了两步&#xff0c;一是直接通过帧间的光流来追踪地图点&#xff0c;并且通过最小化追踪到的地图点的…

Springboot部署服务器项目上线

第一步&#xff0c;项目打包&#xff0c;有两种方式 第一种、直接在项目根目录打开终端&#xff0c;输入以下语句即可。如下图&#xff1a; mvn clean package -DskipTests 第二种、在右侧点击 Maven选项&#xff0c;选择鼠标左键双击package选项即可。如下图&#xff1a; 两…

《研发效能(DevOps)工程师国家职业技术认证》工信部教考中心认证证书:塑造研发效能的黄金标准丨IDCF

随着科技的飞速发展和市场竞争的日益激烈&#xff0c;高素质的技术管理人才在当今社会中扮演着越来越重要的角色。特别是在信息技术领域&#xff0c;企业对于拥有专业技能和丰富知识的研发效能管理与技术人才的需求愈发旺盛。工业和信息化部教育与考试中心&#xff08;以下简称…

ueditor百度富文本编辑器粘贴后html丢失class和style样式

问题 项目经理从123在线编辑上排版好的文章&#xff0c;粘贴到项目的编辑器上&#xff0c;样式完全乱了, 排版是这样的&#xff1a; 复制到ueditor后的格式&#xff1a; 这天差地别呀&#xff0c;于是打开代码模式&#xff0c;发现section的属性全没了 但是&#xff0c;sp…

如何规划好自己的工作与学习时间?助你提高办事效率的待办提醒软件

在竞争激烈的职场中&#xff0c;想要脱颖而出、不断提升自我价值&#xff0c;我们必须不断学习。然而&#xff0c;很多上班族都发现工作忙碌&#xff0c;根本没有时间专注于学习。那么&#xff0c;如何规划好工作与学习时间呢&#xff1f;每个人的时间都是有限的&#xff0c;因…

Transformer最直观的解析(译)

在这篇文章中&#xff0c;我们将看看“Transformer”——一个利用注意力机制来提高模型训练速度的模型。Transformer在特定任务中优于谷歌神经机器翻译模型。然而&#xff0c;最大的好处来自于Transformer如何使自己适合并行化。事实上&#xff0c;Google Cloud推荐使用The Tra…

STM32F4的USB Host驱动移植详细步骤及问题解决

文章目录 1、库文件准备2、工程准备3、移植3.1、新建USB相关文件夹3.2、加USB相关代码3.3、添加头文件路径 4、修改相关代码1、修改usbh_usr.c①&#xff0c;usb_conf.h&#xff0c;include部分&#xff0c;②&#xff0c;定义全局宏③&#xff0c;修改usbh_usr.c 2、修改diski…

iis建立站点外网无法访问(防火墙的入站规则和出站)

iis建立站点 外网无法访问 原因&#xff1a; 被防火墙拦截了 处理方式&#xff1a; 打开window防火墙--高级设置--入站 出站就是你访问外网&#xff0c;入站就是外网访问你&#xff0c;用户可以创建入站和出站规则&#xff0c;从而阻挡或者允许特定程序或者端口进行连接; 可以使…

每日一博 - 图解进程(Process)和线程(Thread)区别联系

文章目录 概述图解小结 概述 进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统中管理和执行任务的两个基本概念&#xff0c;它们之间有以下主要区别&#xff1a; 独立性&#xff1a; 进程是独立的执行单位。每个进程有自己的独立地址空间、…

Nginx神奇的499竟然不在HTTP响应码标准内?快来了解一下!

1 前言 高性能的HTTP和反向代理服务器&#xff0c;Nginx用来&#xff1a; 搭建Web Server作负载均衡供配置的日志字段丰富&#xff0c;从各类HTTP头部到内部性能数据都有 Nginx的访问日志中&#xff0c;存在499状态码的日志。但常见4xx状态码只有400、401、403、404等&#…

【数据结构】二叉树的链式结构

【数据结构】二叉树的链式存储结构 二叉树的存储结构 typedef int BTDataType; // 二叉树的结构 typedef struct BinaryTreeNode {BTDataType data; // 树的值struct BinaryTreeNode *left; // 左孩子struct BinaryTreeNode *right;// 右孩子 } BinaryTreeNode;二…