uni-app createMapContext.on()无效
uni-app createMapContext.on()无效
示例代码:
onLoad() {
this.mapCtx = uni.createMapContext('map',this)
this.mapCtx.on('ClusterInfo', res =>{console.log('ClusterInfo', res)})
this.mapCtx.on('markerClusterCreate', res => {console.log('markerClusterCreate', res)})
this.mapCtx.on('markerClusterClick', res => {console.log('markerClusterClick', res)})
}
操作步骤:
无
预期结果:
无
实际结果:
无
bug描述:
地图api里的on的3个监听事件都不生效,都监听不到,见代码示例,谢谢!
| 信息类别 | 信息内容 |
|---|---|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | 10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.2.12 |
| 第三方开发者工具版本号 | 1.05.211 |
| 基础库版本号 | 2.20.1 |
| 项目创建方式 | HBuilderX |
更多关于uni-app createMapContext.on()无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
没有这个事件的监听 ClusterInfo
写法不对,必须调用 initMarkerCluster() 后 on.markerClusterCreate 才有效
参考文档提供的示例代码 https://uniapp.dcloud.net.cn/api/location/map?id=createmapcontext
更多关于uni-app createMapContext.on()无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html
找到原因了,是因为地图id 填错了,地图实例没有获取到,结贴
createMapContext.on() 方法在微信小程序基础库 2.20.1 版本中确实存在兼容性问题。根据你的代码和版本信息,问题可能源于以下原因:
-
基础库版本兼容性:微信小程序基础库 2.20.1 对
on('ClusterInfo')等事件的支持可能存在缺陷。建议将基础库升级到最新稳定版本(目前为 2.24.x 以上),并在微信开发者工具中重新测试。 -
事件绑定时机问题:
onLoad生命周期中绑定事件时,地图组件可能尚未完全初始化。可以尝试在onReady生命周期中绑定事件,确保地图渲染完成:onReady() { this.mapCtx = uni.createMapContext('map', this); this.mapCtx.on('ClusterInfo', res => { console.log('ClusterInfo', res); }); } -
地图 ID 有效性检查:确保
map组件的id与代码中的'map'完全一致,且页面中仅有一个同名 ID。 -
微信开发者工具调试:在微信开发者工具中打开调试模式,检查控制台是否有相关错误日志。同时,确认小程序后台已申请正确的地图权限(如
scope.map)。
如果以上调整后问题仍存在,可暂时通过监听地图的 [@clusterinfo](/user/clusterinfo) 等原生事件作为替代方案:
<map id="map" [@clusterinfo](/user/clusterinfo)="onClusterInfo" />

