uni-app map 地图组件按照 addMarkers 方法存在BUG

uni-app map 地图组件按照 addMarkers 方法存在BUG

开发环境 版本号 项目创建方式
Windows 10 HBuilderX

操作步骤:

_this.$refs.map1.addMarkers({markers:list,clear:true})

预期结果:

_this.$refs.map1.addMarkers({markers:list,clear:true})

实际结果:

_this.$refs.map1.addMarkers({markers:list,clear:true})

bug描述:

安卓 nvue 页面 _this.$refs.map1.addMarkers({markers:list,clear:true}) 方法无效;


更多关于uni-app map 地图组件按照 addMarkers 方法存在BUG的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

hx3.3.1 alpha已修复

更多关于uni-app map 地图组件按照 addMarkers 方法存在BUG的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你的描述,问题出现在安卓平台的 nvue 页面中,addMarkers 方法调用无效。这确实是 uni-app 地图组件在特定环境下可能遇到的问题。

可能的原因及排查方向:

  1. 时机问题:确保 addMarkers 是在地图组件 [@ready](/user/ready) 事件触发之后调用的。在 onReady 生命周期或 [@ready](/user/ready) 回调中执行是安全的。
  2. 数据格式:检查传入的 list 数据结构是否符合规范,每个 marker 对象必须包含 idlatitudelongitude 等必填字段。id 建议使用数字或字符串,且在当前地图实例内唯一。
  3. 引用问题:在 nvue 中,确保 this.$refs.map1 能正确获取到组件实例。有时在异步操作中,$refs 可能未及时更新。
  4. 平台差异clear: true 参数在部分安卓机型或系统版本上可能存在兼容性问题。可以尝试先调用 removeMarkers 清空,再 addMarkers
  5. 渲染延迟:nvue 页面是原生渲染,地图组件初始化可能需要更多时间。可以尝试用 setTimeout 包裹调用,延迟 100-200ms 执行。

建议的代码调整示例:

// 在 [@ready](/user/ready) 回调中调用
onMapReady() {
    // 可选:稍作延迟确保渲染完成
    setTimeout(() => {
        if (this.$refs.map1) {
            // 先清空现有标记(替代 clear: true)
            this.$refs.map1.removeMarkers();
            // 添加新标记
            this.$refs.map1.addMarkers({
                markers: this.list // 确保 list 格式正确
            });
        }
    }, 200);
}
回到顶部