使用Vue3+ElementPlus+高德地图实现在浏览器中搜索地点并被标记在地图中

效果描述

在页面的输入框中输入想要查询的地点,在输入框的下方会提示跟输入的关键字有关地点,然后按下回车键或者选择下方罗列的地点即可让地图跳转到搜索的位置。

效果展示

页面渲染完成的时候
输入想要查询的地点
按下回车键之后

代码实现

<template><div><div id="container" style="width: 100%; height: 500px"></div><div id="myPageTop"><!-- clearable:是否显示清除按钮,只有当 type 不是 textarea时生效 --><!-- @keyup.enter:当回车键按下的时候触发 --><el-inputid="tipinput"v-model="searchKeyword"placeholder="请输入关键字"clearable@keyup.enter="searchLocation"></el-input></div></div>
</template><script>
import { onMounted, ref } from "vue";
// 引入高德地图API
import { load } from "@amap/amap-jsapi-loader";export default {setup() {// 用户输入的地点关键字const searchKeyword = ref("");let map = null; //初始化地图let placeSearch = null; // 声明placeSearch变量onMounted(async () => {// 设置高德地图的安全配置【此处一定要配置,否则会搜索失败】window._AMapSecurityConfig = {securityJsCode: "换成你的密钥",};// 初始化地图map = await initMap();// 加载插件并绑定事件({ placeSearch } = await loadPluginsAndBindEvents(map)); // 返回并解构出placeSearch});// 初始化高德地图实例async function initMap() {// 加载搞得地图API,包括指定的版本和插件const AMap = await load({key: "换成你的key", // 高德地图API Keyversion: "2.0",plugins: ["AMap.PlaceSearch", "AMap.AutoComplete"],});// 创建地图实例,设置容器ID和允许自适应窗口大小return new AMap.Map("container", {resizeEnable: true,});}// 加载插件并绑定事件async function loadPluginsAndBindEvents(map) {const autoOptions = {input: "tipinput", //绑定到输入框的ID};// 创建自动完成实例const auto = new AMap.AutoComplete(autoOptions);// 创建地点搜索实例,关联到地图const ps = new AMap.PlaceSearch({map: map,});// 绑定自动完成的选中事件,根据选中的地点设置城市并执行搜索auto.on("select", (e) => {ps.setCity(e.poi.adcode); //设置搜索城市为选中地点的城市编码ps.search(e.poi.name); //搜索选中地点的名称});return { placeSearch: ps }; // 返回placeSearch实例}// 处理地点搜索逻辑async function searchLocation() {// 判断用户是否输入了关键字if (!searchKeyword.value.trim()) {ElMessage.error("请输入搜索内容!");return;}// 执行地点搜索,并处理搜索结果placeSearch.search(searchKeyword.value, (status, result) => {console.log(status, result);if (status === "complete" && result.info === "OK") {// 如果搜索成功且有搜索结果if (result.poiList.pois.length > 0) {// 取第一个搜索结果,设置地图中心和缩放级别const poi = result.poiList.pois[0];map.setCenter([poi.location.lng, poi.location.lat]);map.setZoom(15); //缩放级别} else {ElMessage.error("未找到相关地点!");}} else {ElMessage.error("搜索失败!");}});}return {searchKeyword,searchLocation,};},
};
</script><style>
/* 引入高德地图样式 */
@import url("https://cache.amap.com/lbs/static/main1119.css");
</style>

设置高德地图Key

登录高德地图开放平台

点击标题栏中的控制台,进入到控制台界面

点击应用管理 ==》我的应用,如果有应用的话创建个应用,也可以用之前的应用,然后点击添加Key,写入key的名称 ==》服务平台选择Web端(JS API) ==》勾选阅读并同意 ==》点击提交按钮,即可创建一个新的Key

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python强化学习(Reinforcement Learning, RL)库之gymnasium使用详解

概要 在强化学习(Reinforcement Learning, RL)领域中,环境(Environment)是进行算法训练和测试的关键部分。gymnasium 库是一个广泛使用的工具库,提供了多种标准化的 RL 环境,供研究人员和开发者使用。通过 gymnasium,用户可以方便地创建、管理和使用各种 RL 环境,帮助…

【Ardiuno】实验使用ESP32单片机实现高级web服务器暂时动态图表功能(图文)

接下来&#xff0c;我们继续实验示例代码中的Wifi“高级web服务器”&#xff0c;配置相关的无线密码后&#xff0c;开始实验 #include <WiFi.h> #include <WiFiClient.h> #include <WebServer.h> #include <ESPmDNS.h>const char *ssid "XIAOFE…

STM32学习和实践笔记(35):内部温度传感器实验

1.STM32F1内部温度传感器介绍 1.1 STM32F1内部温度传感器简介 STM32F1内部含有一个温度传感器&#xff0c;可用来测量 &#xff08;STM32芯片的&#xff09;CPU 及周围的温度(TA)。&#xff08;实际并不用来测周围的温度&#xff0c;仅用来测试CPU的温度&#xff09; 此温度传…

最强:智慧物流装备大全

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 完整版文件和更多学习资料&#xff0c;请球友到知识星球【智能仓储物流技术研习社】自行下载 在科技日新月异的今天&#xff0c;物流行业正经历着…

创新共享经济:探索Web3对新商业模式的启迪

随着Web3时代的到来&#xff0c;我们正在见证着一场数字经济的革命。在这个革命中&#xff0c;区块链技术作为一种基础设施&#xff0c;正为创新的共享经济模式提供新的契机。本文将深入探讨Web3对新商业模式的启迪&#xff0c;以及如何借助区块链技术构建更加开放、公平、高效…

程序员,真有不变的技术和稳定的工作吗?

在程序员这个充满变化和创新的领域&#xff0c;很多人追求“稳定”的工作&#xff0c;认为找到一个合适的公司和岗位就能安心一辈子。然而&#xff0c;技术的快速更新迭代和市场需求的不断变化&#xff0c;使得真正的稳定变得越来越难以捉摸。作为程序员&#xff0c;我们需要反…

手撕算法 | 华盛顿大学教授用45页PPT搞定了八大神经网络算法,全面解析

以下是八大常见的神经网络算法 1️⃣卷积神经网络&#xff08;CNN&#xff09;&#xff1a; 卷积神经网络&#xff08;CNN&#xff09;是一种深度学习模型&#xff0c;专门用于处理图像和音频等网格结构数据。它通过卷积操作提取特征&#xff0c;并通过池化操作降低数据维度。C…

IDM下载器2024快如闪电,告别等待!

网络时代&#xff0c;资源下载成为日常工作和生活的必需部分。然而&#xff0c;面对日益增长的数据量和多样化的下载需求&#xff0c;传统的下载方式往往显得捉襟见肘&#xff0c;不仅耗时耗力&#xff0c;还可能影响工作效率。 IDM马丁版下载如下: https://wm.makeding.com/…

破解动态网页:如何用JavaScript获取自动消失的联想词

前几天在做数据分析时&#xff0c;我尝试获取某网站上输入搜索词后的联想词&#xff0c;输入搜索词后会弹出一个显示联想词的框。有趣的是&#xff0c;当我尝试通过按F12定位这个弹框在HTML中的位置时&#xff0c;输入框失去焦点后&#xff0c;联想词弹框就自动消失了。我观察到…

【PowerDesigner】PDM生成REPORT

目录 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 &#x1f30d;1.2 PowerDesigner使用环境 &#x1f30a;2. PDM生成REPORT &#x1f30a;3. 研究心得 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 主要使用PowerDesigner的…

你觉得前端开发人员有必要学习Rust吗?

有必要&#xff0c;为什么&#xff1f; 1. 性能优势 Rust能编译成高效的机器码&#xff0c;这对于需要高性能处理的前端项目尤其有利。例如&#xff0c;处理复杂的数据计算或图像处理时&#xff0c;Rust可以提供接近于C/C的性能&#xff0c;同时避免诸如内存泄漏或缓冲区溢出…

外汇天眼:Equals集团发布战略评估通知:MDP不再考虑收购提议

Equals Group plc (LON)今天发布了一份关于其战略评估的通知。 Equals公司不再与Madison Dearborn Partners, LLC (MDP)就公司的收购提议进行讨论。MDP因此发布了一份声明&#xff0c;确认其不打算为公司提出收购提议。 然而&#xff0c;MDP与其投资组合公司MoneyGram Interna…

Vue 面试通杀秘籍

理论篇&#xff1a; 1. 说说对 Vue 渐进式框架的理解&#xff08;腾讯医典&#xff09; a) 渐进式的含义&#xff1a; 主张最少, 没有多做职责之外的事 b) Vue 有些方面是不如 React&#xff0c;不如 Angular.但它是渐进的&#xff0c;没有强主张&#xff0c; 你可以在原有…

LogicFlow 学习笔记——1. 初步使用 LogicFlow

什么是 LogicFlow LogicFlow 是一个开源的前端流程图编辑器和工作流引擎&#xff0c;旨在帮助开发者和业务人员在网页端创建、编辑和管理复杂的业务流程和工作流。它提供了一个直观的界面和强大的功能&#xff0c;使得设计和管理工作流变得更加高效和便捷。 官网地址&#xff…

RN:Error: /xxx/android/gradlew exited with non-zero code: 1

问题 执行 yarn android 报错&#xff1a; 解决 这个大概率是缓存问题&#xff0c;我说一下我的解决思路 1、yarn doctor 2、根据黄色字体提示&#xff0c;说我包版本不对&#xff08;但是这个是警告应该没事&#xff0c;但是我还是装了&#xff09; npx expo install --…

企事业单位安全生产月活动怎样向媒体投稿?

作为一名单位的信息宣传员,我肩负着将每一次重要活动的精彩瞬间转化为文字,向外界传递我们单位声音的重任。初入此行时,我满怀热情,坚信通过传统的方式——电子邮件投稿,能够有效地将我们的故事传播出去。然而,现实却给我上了生动的一课。 记得在筹备“安全生产月”活动的宣传时…

Ubuntu22.04之解决:emacs无法输入中文问题(二百四十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

代码随想录 | Day18 | 二叉树:完全二叉树的节点个数平衡二叉树

代码随想录 | Day18 | 二叉树&#xff1a;完全二叉树的节点个数&&平衡二叉树 主要学习内容&#xff1a; 1.完全二叉树的性质&#xff0c;满二叉树的节点数量的计算 2.树的高度和深度问题要用后序遍历更加合适 222.完全二叉树的节点个数 222. 完全二叉树的节点个数…

MT2096 数列分段

代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e5 10; int n, m; int a[N]; int ans 1; int main() {cin >> n >> m;for (int i 1; i < n; i)cin >> a[i];int num 0;for (int i 1; i < n; i){if (num a[i…

【QT】记录一次QT程序发布exe过程

记录一次QT程序发布exe过程 使用windeploy与enigma发布独立的QT程序第一步 QT编译输出 **release** 版本第二步 QT 自带 windepoyqt 补全链接库第三步 enigma virtual box压缩打包为单一exe最后【2024-06-07 17】- 【补充】 贴一个自己用的bat脚本【**QtDeploy2exe.bat**】半自…