AMap.MarkerCluster 在Vue中显示数量为2,但是放大页面,看到只有一个点。

news/2025/12/7 15:42:19/文章来源:https://www.cnblogs.com/emanlee/p/19318193

AMap.MarkerCluster 在Vue中显示数量为2,但是放大页面,看到只有一个点。

下图左侧:

图片

 放大之后:

图片

 

================================

在 Vue 项目中使用高德地图的AMap.MarkerCluster(点聚合)功能时,遇到了聚合显示数量为 2,但放大地图后却只看到一个标记点的问题,这通常是坐标重叠或 Marker 实例创建 / 添加异常导致的。

问题分析与解决方案

核心原因主要有两类:
 
  1. 两个 Marker 的坐标完全相同 / 极近距离,放大后视觉上重叠成一个点;
  2. 其中一个 Marker 未正确创建 / 添加到聚合器中(Vue 生命周期或实例管理问题)。
 
以下是完整的 Vue 示例代码,包含调试和修复逻辑:
 
vue
 
 
<template><div id="map-container" ></div>
</template><script>
export default {name: 'MapClusterDemo',data() {return {map: null,markerCluster: null,// 模拟点位数据(注意:如果两个坐标完全一样,就会出现你遇到的问题)points: [{ lng: 116.397428, lat: 39.90923 }, // 点位1{ lng: 116.397428, lat: 39.90923 }, // 点位2(和点位1坐标相同,放大后重叠)// 可以改成不同坐标测试:{ lng: 116.398428, lat: 39.90923 }]};},mounted() {this.initMap();},beforeUnmount() {// 清理地图实例,避免内存泄漏if (this.markerCluster) {this.markerCluster.clearMarkers();this.markerCluster = null;}if (this.map) {this.map.destroy();this.map = null;}},methods: {async initMap() {// 确保高德地图SDK已加载(如果是异步加载,需先等待)if (!window.AMap) {console.error('高德地图SDK未加载');return;}// 初始化地图this.map = new window.AMap.Map('map-container', {zoom: 12,center: [116.397428, 39.90923]});// 创建Marker数组const markers = [];this.points.forEach((point, index) => {const marker = new window.AMap.Marker({position: [point.lng, point.lat],title: `点位${index + 1}` // 给每个Marker加标题,方便调试});markers.push(marker);// 调试:打印每个Marker的坐标,确认是否正确创建console.log(`Marker${index + 1} 坐标:`, marker.getPosition());});// 调试:确认Marker数组长度(应该等于2)console.log('Marker总数:', markers.length);// 初始化聚合器this.markerCluster = new window.AMap.MarkerCluster(this.map, markers, {gridSize: 80, // 聚合网格大小(像素),可根据需求调整minClusterSize: 2, // 最小聚合数量(默认2)renderClusterMarker: (context) => {// 自定义聚合点样式(可选)return new window.AMap.Marker({position: context.center,content: `<div >${context.count}</div>`,offset: new window.AMap.Pixel(-15, -15)});}});// 监听聚合事件,确认聚合的Marker数量this.markerCluster.on('cluster', (e) => {console.log('聚合的Marker数量:', e.markers.length);});// 监听散点事件,确认散点的Markerthis.markerCluster.on('disperse', (e) => {console.log('散点的Marker数量:', e.markers.length);e.markers.forEach((marker, index) => {console.log(`散点Marker${index + 1} 坐标:`, marker.getPosition());});});}}
};
</script>
 

关键修复步骤说明

  1. 检查坐标是否重复
     
    打开浏览器控制台,查看打印的 Marker 坐标,如果两个坐标完全相同,放大后就会重叠成一个点。可以给重复坐标增加微小偏移(比如0.0001),示例:
     
    // 给重复坐标加微小偏移
    this.points = [{ lng: 116.397428, lat: 39.90923 },{ lng: 116.397428 + 0.0001, lat: 39.90923 + 0.0001 },
    ]; 
     
  2. 验证 Marker 是否正确创建
     
    控制台打印的Marker总数必须是 2,如果是 1,说明其中一个 Marker 未创建成功(比如坐标格式错误、SDK 未加载完成)。
  3. 调整聚合器配置
     
    gridSize(聚合网格大小)过小会导致近距离点被聚合,可适当调大(如 80-100);minClusterSize设为 2 确保至少 2 个点才聚合。
  4. Vue 生命周期管理
     
    确保在mounted中初始化地图(DOM 已渲染),在beforeUnmount中清理实例,避免 SDK 实例异常。

总结

  1. 核心问题是Marker 坐标重复 / 极近导致视觉重叠,或 Marker 实例未正确创建;
  2. 通过控制台打印 Marker 坐标和数量,可快速定位问题;
  3. 对重复坐标增加微小偏移,或检查 Marker 创建逻辑,即可解决 “聚合数 2 但放大只有 1 个点” 的问题。

 

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

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

相关文章

2025深圳/惠州装配线服务商TOP5评测!组装线/生产线/输送线/老化线等优质厂家口碑榜,技术创新+实力实证权威榜单发布,赋能智能工业制造新生态

随着智能制造的快速发展,装配线、生产线、总装线等自动化设备在工业生产中的作用愈发重要,市场对优质服务商的需求也日益增长。本榜单基于技术实力、行业适配性、服务效能三大维度,结合行业发展趋势及市场反馈,对2…

WebGPU DevTools All In One

WebGPU DevTools All In One WebGPU InspectorWebGPU DevTools All In One WebGPU Inspector WebGPU Inspector Debugging Tools WebGPU Inspector is a Chrome Developer Tools extension for debugging WebGPU conte…

香橙派AI Pro个人云平台 - 从零搭建全记录

# 香橙派AI Pro个人云平台 - 从零搭建全记录### 前言> 越界访问是什么?一个开放的个人文件托管平台(如免费图床),按道理说用户只能查看自身账户下的文件内容,但通过改变超链接标签,实现了访问其他用户的图片内…

Java 泛型:简单易懂的核心讲解(含实战代码)

Java 泛型(Generics)是 “参数化类型” 的技术 —— 简单说就是给类、接口、方法定义时,不指定具体数据类型,而是用一个 “占位符”(比如 <T>)代替,使用时再传入实际类型(如 String、Integer)。核心价值…

Python基础全攻略:从入门到精通

基本语法 缩进:用缩进来表示代码块,通常用4个空格 注释:单行注释用#,多行注释用或""" 语句结束:通常每行一条语句,也可用分号分隔,但不推荐 变量和数据类型 变量:无需声明类型,直接赋值 常见数…

Java IO:简单易懂的核心讲解(含实战代码)

Java IO(Input/Output)是处理 “数据读写” 的核心技术,比如读取文件内容、写入文本到本地、网络数据传输等,本质是实现程序与外部设备(文件、键盘、网络)的数据交换。Java 提供了完善的 IO 体系,核心分为 字节…

深入解析:昇腾CANN训练营 学习(day3)昇腾AI处理器开发环境构建与实践指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

机器学习中交叉验证(CV)、CV fold(交叉验证折) 和 数据泄露 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CF2174D tutorial

English version Hints How to choose the edges greedily? In which cases does the greedy method fail? How can we find the extra non-tree edges? Solution Step1 First, sort the edges by weight. If the f…

Python 基础语法:简单易懂的入门指南(含实战代码)

Python 以 “简洁、易读、灵活” 著称,核心语法贴近自然语言,是编程入门的首选。以下用大白话 + 实战代码,带你吃透 Python 基础核心知识点,零基础也能快速上手! 一、先搞懂 3 个核心前提解释型语言:写完代码直接…

Say 赛选记(11.27)

noip 前的最后一篇了(悲 AT_arc171_d [ARC171D] Rolling Hash 众所周知,\([l,r]\) 的哈希值是可以用前缀相减来算的,也就是 \(s_r - s_{l - 1} \times B^{r - l + 1}\),但这个形式在这道题中就力不从心了。 换一个…

.NET异步编程进阶:从语法糖到高性能架构的核心突破

深入探讨如何智能地结合I/O和CPU工作、避免隐藏的线程池成本,以及使用新的.NET功能使异步比以往更安全、更快速。 .NET异步编程进阶:从语法糖到高性能架构的核心突破 在每个.NET开发者的职业生涯中,都会有一个转折…

AI元人文:价值共生时代的元操作系统——理论架构、深层辩护与演进蓝图

AI元人文:价值共生时代的元操作系统——理论架构、深层辩护与演进蓝图 摘要 本文提出并系统阐释了“AI元人文”理论框架,旨在应对通用人工智能(AGI)时代“价值对齐”的根本困境。该框架实现了从寻求静态、普适价值…

2025深圳、惠州生产线厂家TOP5推荐!广东深圳、惠州地区装配线/老化线/组装线/装配线等优质供应商专业评测,智能智造+整厂方案权威榜单发布,技术赋能重构工业生产生态

随着工业自动化技术的飞速发展,生产线设备作为制造业升级的核心基础设施,市场需求持续攀升。本榜单基于技术实力、行业适配性、服务覆盖度三大维度(振熙自动化新增“整厂规划”维度),结合行业协会数据与企业实地调…

[开源代码]基于STM32的环境检测与报警系统

[开源代码]基于STM32的环境检测与报警系统 前言 随着物联网和智能硬件的发展,环境检测在工业、农业以及家庭自动化中变得越来越重要。传统的环境监测多依赖单一传感器,无法实现多参数同时监控,也难以针对不同参数设…

120_尚硅谷_函数注意事项和细节(3)

120_尚硅谷_函数注意事项和细节(3)1.函数注意事项和细节讨论 2.使用 _ 标识符,忽略返回值 3.Go支持可变参数

数据采集与融合技术作业四_102302107_林诗樾

作业①: 要求: 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 候选网站:…

深入解析:了解一个开源日志平台——Elastic Stack

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

低代码平台的强扩展性设计:支撑企业长期业务增长的技巧路径与实践

低代码平台的强扩展性设计:支撑企业长期业务增长的技巧路径与实践2025-12-07 15:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !i…

第二届机器学习暑期学校在印度启动

某中心在印度启动了第二届机器学习暑期学校,这是一个面向工程专业本科及研究生的扩展项目。课程涵盖深度神经网络、监督学习等核心ML主题,并通过虚拟模块与实时问答,为学生提供应用科学技能培训。2021年,某中心在印…