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

3 回复

没有这个事件的监听 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 版本中确实存在兼容性问题。根据你的代码和版本信息,问题可能源于以下原因:

  1. 基础库版本兼容性:微信小程序基础库 2.20.1 对 on('ClusterInfo') 等事件的支持可能存在缺陷。建议将基础库升级到最新稳定版本(目前为 2.24.x 以上),并在微信开发者工具中重新测试。

  2. 事件绑定时机问题onLoad 生命周期中绑定事件时,地图组件可能尚未完全初始化。可以尝试在 onReady 生命周期中绑定事件,确保地图渲染完成:

    onReady() {
        this.mapCtx = uni.createMapContext('map', this);
        this.mapCtx.on('ClusterInfo', res => {
            console.log('ClusterInfo', res);
        });
    }
    
  3. 地图 ID 有效性检查:确保 map 组件的 id 与代码中的 'map' 完全一致,且页面中仅有一个同名 ID。

  4. 微信开发者工具调试:在微信开发者工具中打开调试模式,检查控制台是否有相关错误日志。同时,确认小程序后台已申请正确的地图权限(如 scope.map)。

如果以上调整后问题仍存在,可暂时通过监听地图的 [@clusterinfo](/user/clusterinfo) 等原生事件作为替代方案:

<map id="map" [@clusterinfo](/user/clusterinfo)="onClusterInfo" />
回到顶部