uni-app nvue map 聚合的点击事件无法触发
uni-app nvue map 聚合的点击事件无法触发
示例代码:
this.mapContext = uni.createMapContext(this.mapId, this); 这个实例底下找不到 on 打印出来原型连看不到
## 操作步骤:
this.mapContext = uni.createMapContext(this.mapId, this);
这个实例底下找不到 on
打印出来原型连看不到
预期结果:
可以触发 nvue map 聚合的点击事件
## 实际结果:
this.mapContext = uni.createMapContext(this.mapId, this);
这个实例底下找不到 on
bug描述:
MapContext.on(‘markerClusterClick’, (res) => {}) map聚合点击事件用不了
## 开发环境
| 项目 | 版本号 |
|--------------|----------|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win 10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.2.3 |
| 手机系统 | Android |
| 手机系统版本号 | Android 10 |
| 手机厂商 | 小米 |
| 手机机型 | 小米9 |
| 页面类型 | nvue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |


更多关于uni-app nvue map 聚合的点击事件无法触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
Bug 已确认,当前版本尚未实现,预计下个版本支持
更多关于uni-app nvue map 聚合的点击事件无法触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
还是没有修复啊,都3.2.9版本了
回复 菜鸟陈: 前天刚回复你,确认问题,正在修复中,预计3.2.10支持,大概这周会发布
你的聚合是怎么实现的? 文档都没有说清楚,搞了好久都没搞出来。
同问点聚合,也搞了好久了
3.2.10 已支持 MapContext.on 后续将在文档中提供示例代码
已更新文档,参见文档中地图聚合API示例: https://uniapp.dcloud.net.cn/api/location/map?id=createmapcontext
在 nvue 中使用 map 组件时,聚合点击事件确实需要通过 MapContext.on('markerClusterClick', callback) 来监听。根据你的描述,createMapContext 返回的实例中找不到 on 方法,这通常是因为 nvue 的 map 组件上下文创建方式与 vue 页面不同。
原因分析:
- nvue 页面中,
createMapContext的第二个参数应为当前页面实例,但 nvue 页面结构不同,可能未正确传递this。 - HBuilderX 3.2.3 版本中,nvue 的 map 组件支持可能不完整,尤其是聚合事件相关 API。
解决方案:
-
检查
createMapContext调用方式:// 在 nvue 页面中,通常直接使用 this 即可 this.mapContext = uni.createMapContext(this.mapId, this);如果仍无效,尝试省略第二个参数:
this.mapContext = uni.createMapContext(this.mapId); -
确认 map 组件配置: 确保 map 组件已开启聚合功能:
<map id="myMap" :markers="markers" :enable-cluster="true" [@markerClusterClick](/user/markerClusterClick)="onClusterClick"></map>注意:nvue 中可能不支持
[@markerClusterClick](/user/markerClusterClick)绑定,需通过MapContext.on监听。 -
使用
setTimeout延迟监听: 地图上下文创建后,组件可能未完全初始化,可延迟绑定事件:this.mapContext = uni.createMapContext(this.mapId, this); setTimeout(() => { this.mapContext.on('markerClusterClick', (res) => { console.log('聚合点击事件触发', res); }); }, 500);

