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 地图组件在特定环境下可能遇到的问题。
可能的原因及排查方向:
- 时机问题:确保
addMarkers是在地图组件[@ready](/user/ready)事件触发之后调用的。在onReady生命周期或[@ready](/user/ready)回调中执行是安全的。 - 数据格式:检查传入的
list数据结构是否符合规范,每个marker对象必须包含id、latitude、longitude等必填字段。id建议使用数字或字符串,且在当前地图实例内唯一。 - 引用问题:在 nvue 中,确保
this.$refs.map1能正确获取到组件实例。有时在异步操作中,$refs可能未及时更新。 - 平台差异:
clear: true参数在部分安卓机型或系统版本上可能存在兼容性问题。可以尝试先调用removeMarkers清空,再addMarkers。 - 渲染延迟: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);
}

