当前位置: 首页 > news >正文

Vue3,setup,高德地图api,实现地图搜索查询地址功能

效果图:

高德地图搜索api支持模糊搜索.

高德地图key申请:

安装依赖:npm i @amap-jsapi-loader -- s

地图组件页面:

<template> <div class="main"> <div class="form"> <!--搜索框--> <input type="text" class="input" v-model="address" id="tipinput" @keyup.enter="select"> </div> <!--查询列表,高德地图api绑定id--> <div class="list" id="list"> </div> <!--地图,需要设置宽高--> <div class="map" id="gd_map_d"></div> </div> </template> <script setup> import AMapLoader from '@amap/amap-jsapi-loader'; //data const { proxy } = getCurrentInstance(); const address = ref(""); let geocoder = null; let MyMap = null; let map = null; //methods const select = () => { //构造地点查询类 var placeSearch = new MyMap.PlaceSearch({ pageSize: 3, // 单页显示结果条数 pageIndex: 1, // 页码 city: "010", // 兴趣点城市 citylimit: false, //是否强制限制在设置的城市内搜索 map: map, // 展现结果的地图实例 panel: "list", // 结果列表将在此容器中进行展示。 autoFitView: false // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围 }); //关键字查询 placeSearch.search(proxy.address); } const getAddress = () => { let cc = map.getCenter(); return new Promise((resolve, reject) => { geocoder.getAddress([cc.lng, cc.lat], (status, result) => { if (result.regeocode.formattedAddress) { resolve(result.regeocode.formattedAddress) } else { resolve(""); } }) }) } //mapinit window._AMapSecurityConfig = { securityJsCode: '填写高德地图Web端(JS API)申请的密钥', } AMapLoader.load({ "key": "填写高德地图Web端(JS API)申请的key", // 申请好的Web端开发者Key "version": "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15 "plugins": ['AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.Geocoder'], // 需要使用的的插件列表,如比例尺'AMap.Scale'等 }).then((AMap) => { MyMap = AMap;//保存AMap init(); }).catch(e => { console.log(e); }) const init = () => { //绘制MyMap实例地图 map = new MyMap.Map('gd_map_d', { zoom: 14, //初始地图级别 center: [121.473432, 31.22919], resizeEnable: true }) geocoder = new MyMap.Geocoder({ city: "010", //城市设为北京,默认:“全国” }); var auto = new MyMap.AutoComplete({ input: "tipinput" }); } defineExpose({ getAddress //将事件暴露出去 }) </script> <style scoped lang="scss"> .main { width: 100%; height: 350px; position: relative; .map { width: 100%; height: 100%; } .form { position: absolute; left: 10px; top: 10px; z-index: 999; .input { width: 180px; line-height: 30px; padding-left: 5px; box-shadow: 0 2px 6px 0 rgb(114 124 245 / 50%); outline: none; border-radius: 5px; border: none; } } .list { position: absolute; top: 10px; right: 10px; height: 300px; width: 240px; z-index: 999; .li { line-height: 25px; } } } </style>

父组件页面

<template> <el-dialog v-model="dialogVisible2" title="地图" width="50%" :close-on-click-modal="false"> <div class="amap-wrapper"> <div id="Amap"> <MyMap ref="mymap"></MyMap> </div> </div> <template #footer> <span class="dialog-footer"> <el-button type="primary" @click="getAddress">保存</el-button> <el-button @click="dialogVisible = false"> 取消 </el-button> </span> </template> </el-dialog> </template> <script setup> import { computed } from '@vue/reactivity'; import { getCurrentInstance, ref, reactive } from 'vue'; const { proxy } = getCurrentInstance(); const dialogVisible = ref(true); const getAddress = () => { proxy.$refs.mymap.getAddress().then(res => { console.log(res); }) } </script>
http://www.jsqmd.com/news/1400542/

相关文章:

  • 智能家居统一控制中心实战:一篇看懂 ha-bridge,让 Alexa 指挥全屋设备
  • BT下载卡在99%不动了?这份每日自动更新的114个公共Tracker清单,5分钟让下载提速2.4倍
  • 把“部署应用“写成一份 YAML:KubeVela 深度实战指南
  • 2026评选工具大比拼:人人微投票、评选星投票、天天评选与365评选深度测评
  • 微信小程序实现两张图片合二为一
  • 电工杯竞赛:赛前24小时高效备赛与实战策略全解析
  • 2026年8月 外文学术写作与科研绘图工具全解析:逢君学术一站式解决多元科研需求 - 互联网科技品牌测评
  • 公共 Tracker 亲测对决:一份 trackerslist,把 BT 下载从 20KB/s 拽回满速
  • macOS 窗口管理新思路:试试免费开源的 Loop
  • 三步在腾讯云桌面部署OpenClaw AI助理:从环境配置到高阶优化
  • 视频转码完整指南:从入门到精通的HandBrake实战方法
  • Linux-日志查询
  • Word页码从指定页开始:分节符原理与四步操作详解
  • 2026实测可用的方法:动图发朋友圈变成静态图怎么解决 - 图片处理研究员
  • AI赋能编程教学:零门槛在线生成专业教案,解放教师备课时间
  • 从传感器到AI代码生成:构建基于动物行为的自动化编程系统
  • iOS设备信息全解析:从芯片到系统支持的完整对照表构建与应用
  • 用postgresql实现es搜索功能 - 孙龙
  • 文件被 rm 之后还能救回来吗?一文掌握 trash-cli 命令行回收站的完整用法
  • 如何用 Navicat Keygen Tools 完成离线激活:从换公钥到生成激活码的完整实战
  • 掌心藏着一只“电子海豚“:Flipper Zero BadUSB脚本集锦上手指南
  • 你的144Hz显示器,在Roblox里可能一直在空转:Roblox FPS解锁器完整上手指南
  • 2026年8月北京五年内曾酒驾又醉驾从重处罚律所辩护参考:5家律所应对从重处罚辩护实务 - 品牌深度评测
  • boolinq完全指南:从安装到精通,一站式掌握C++ LINQ编程
  • 有哪些方法可以快速提升淘宝新店流量?新手零成本起流全攻略
  • 2026甄选:粤泓(深圳)建筑咨询有限公司——电力工程监理资质代办的全程护航实力之选 - 卓企推荐
  • 广州电商财税机构选型指南:2026金税四期下的合规筛选标准与口碑机构参考 - 互联网科技品牌测评
  • 智谱AI ZCode智能编程助手实战指南:从概念到工程集成
  • 道脉相续——古圣路标与当代拓扑新解043
  • 微信逆向入门:解密 ipa 之前,先搞懂这 3 个关键问题