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

高德地图自定义 Marker:点击 悬停 显示信息框InfoWindow实战(Vue + AMap 2.0)

一、前言

在前端地图应用中,点击或悬停标记点(Marker)并弹出信息框(InfoWindow)是很常见的交互需求。本文将结合 Vue 与高德地图(AMap),讲解如何给自定义 Marker 添加点击与悬停事件,并显示定制的提示框。适用于想要增强地图应用交互体验的读者。

📌 如果你正在开发一个车辆监控、商户分布、物流调度等地图应用,这篇文章会很有参考价值。

 


二、环境准备

在开始编码之前,请确保你具备以下条件:

  • Vue3(Composition API)开发环境;

  • 已成功引入 高德地图 JS API

  • 拥有高德地图的 API Key;

  • 有一组需要展示的标记点数据(含经纬度和展示内容)。

📌如果你还不清楚 Key 申请地图初始化 的过程,可以先参考我的另一篇文章 👉 高德地图 Key 申请与初始化。


三、核心思路

整体实现流程拆解如下:

  1. 在 Vue 组件中准备地图容器 mapRef

  2. 初始化地图对象 AMap.Map

  3. 创建 infoWindow 用于展示详情;

  4. 遍历标记点,生成自定义 Marker

  5. 给 Marker 绑定 点击 / 悬停事件

  6. 动态设置 InfoWindow 的内容并展示;

  7. 鼠标移出关闭 InfoWindow。

  8. 若用户没有手动拖动或缩放地图,Marker 渲染后自动调整视野(FitBounds / FitView)。


四、示例代码解析

下面给出一个基于 Vue3 + TypeScript 的完整示例:

1. 声明与准备工作

定义组件 props 接收外部参数,比如 zoom、markers 数据、地图高度等。例:

const props = defineProps<{zoom?: number;markers?: GpsDevice[];height?: number;
}>();

定义地图相关变量,包括地图实例 map、存储 Marker 的数组 markerLayer、信息窗口 infoWindow、标记用户是否手动干预地图的 userInteracted 。

const mapRef = ref<HTMLElement | null>(null)
let map: AMap.Map | null = null
let markerLayer: AMap.Marker[] = []
let infoWindow: AMap.InfoWindow | null = null
let userInteracted = false // ✅ 是否用户手动交互过地图

定义一个 GpsDevice 接口表示每个设备的属性。

interface GpsDevice {id: string; // 设备唯一 IDstatus: 'online' | 'online_driving' | 'offline' | 'online_parking'; // 车辆状态:在线、行驶中、离线、停车中licensePlate: string; // 车牌号ts: string | numb

文章转载自:

http://ibJx954k.mgnrc.cn
http://Hhrb0O3D.mgnrc.cn
http://sXjcpMi8.mgnrc.cn
http://B8PA2pBT.mgnrc.cn
http://2zlevjf4.mgnrc.cn
http://j0N98TmC.mgnrc.cn
http://OhJqXY3b.mgnrc.cn
http://hN6kbmCj.mgnrc.cn
http://LfvJr24L.mgnrc.cn
http://nNDcF6ql.mgnrc.cn
http://FF7gQd9o.mgnrc.cn
http://ix0c2w0P.mgnrc.cn
http://BBiMfdDK.mgnrc.cn
http://SsQciTnT.mgnrc.cn
http://zFoD0EOE.mgnrc.cn
http://mhzqzd9r.mgnrc.cn
http://I5fMXdQN.mgnrc.cn
http://v5fRCiYW.mgnrc.cn
http://T2VrAtZJ.mgnrc.cn
http://jOAzaETk.mgnrc.cn
http://24iLx7sC.mgnrc.cn
http://TcB1beXP.mgnrc.cn
http://fLu1jbZm.mgnrc.cn
http://hIITnOkY.mgnrc.cn
http://9Z4JBuZ1.mgnrc.cn
http://gYUfzD7R.mgnrc.cn
http://ktEo9Fuw.mgnrc.cn
http://G6gYg3t6.mgnrc.cn
http://jq2cOipa.mgnrc.cn
http://JGJ10aIq.mgnrc.cn
http://www.dtcms.com/a/382103.html

相关文章:

  • 猿辅导Java后台开发面试题及参考答案
  • 启动项目提示:org.springframework.context.annotation不存在问题
  • 从零开始的指针(3)
  • “移动零”思路与题解
  • 大模型训练框架:Swift 框架
  • [笔记] 来到了kernel 5.14
  • 【算法笔记】快速排序算法
  • 数据结构——顺序表(c语言笔记)
  • Java 黑马程序员学习笔记(进阶篇6)
  • Day04 前缀和差分 1109. 航班预订统计 、304. 二维区域和检索 - 矩阵不可变
  • Java 类加载与对象内存分配机制详解
  • 【数据结构——图与邻接矩阵】
  • 再次深入学习深度学习|花书笔记1
  • 信息检索、推荐系统模型排序质量指标:AP@K和MAP@K
  • 详解 OpenCV 形态学操作:从基础到实战(腐蚀、膨胀、开运算、闭运算、梯度、顶帽与黑帽)
  • 《2025年AI产业发展十大趋势报告》五十五
  • 【面试题】RAG优化策略
  • 06 一些常用的概念及符号
  • Oracle事件10200与10201解析:数据库读一致性CR与Undo应用
  • 新手向:C语言、Java、Python 的选择与未来指南
  • 【人工智能通识专栏】第十四讲:语音交互
  • 3.RocketMQ核心源码解读
  • 微信小程序开发教程(十一)
  • [硬件电路-194]:NPN三极管、MOS-N, IGBT比较
  • 零基础学AI大模型之AI大模型常见概念
  • [Dify] 插件节点用法详解:如何将插件整合进工作流
  • 2025年数字公共治理专业重点学什么内容?(详细指南)
  • 如何在 Windows 系统中对硬盘 (SSD) 进行分区
  • 【深耕好论文】
  • Python快速入门专业版(二十八):函数参数进阶:默认参数与可变参数(*args/**kwargs)