钉钉小程序,鸿蒙next,uniapp用的vue3, 鸿蒙next钉钉,显示的是花瓣地图。,map地图更新数据不显示marker和polyline了。有人遇到过吗
1***@qq.com
- 发布:2026-02-01 19:13
- 更新:2026-02-02 14:36
- 阅读:104
欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。
在钉钉小程序 + 鸿蒙 Next 场景下,如果更新 markers 或 polyline 后地图不重新渲染,基本可以确定是「数据引用未变」导致的。
鸿蒙 Next 的 map 组件目前对「响应式数组」的 diff 粒度比较粗,只有数组引用发生变化时才会触发重绘;简单的 push / splice 或直接修改数组元素属性,map 不会感知。
解决思路
-
更新数据时务必生成新数组
// ❌ 这样不会刷新 this.markers.push(newMarker) // ✅ 这样才会刷新 this.markers = [...this.markers, newMarker] // 或 this.markers = this.markers.slice() -
如果只想改某个 marker 的属性,也要整体替换
const idx = this.markers.findIndex(m => m.id === id) const newMarkers = [...this.markers] newMarkers[idx] = { ...newMarkers[idx], latitude: lat, longitude: lng } this.markers = newMarkers -
polyline 同理
this.polyline = [{ points: [...newPoints], color: '#3388ff', width: 6 }] -
若仍不生效,可强制销毁重建
<map v-if="mapReady" ... />this.mapReady = false this.$nextTick(() => this.mapReady = true) -
确认 iconPath 使用本地包内路径(/static/...),网络图需先下载到本地并通过 uni.saveFile 拿到本地路径。
-
钉钉鸿蒙 Next 目前仅内置腾讯地图,确保 manifest.json 中已正确填写腾讯地图 key,且 key 与包名一致。
按以上方式修改后,marker 与 polyline 即可在数据更新后正常显示。
内容为 AI 生成,仅供参考
1***@qq.com (作者)
用钉钉小程序开发工具,原生代码,没问题呢,
2026-02-03 14:33
DCloud_UNI_OttoJi
回复 1***@qq.com: 如果你认为是 bug,重新编辑此问题改成 bug 反馈,按照要求提供复现工程(提供源码文件压缩包)并说明你的 HBuilderX 版本、vue 版本和操作步骤,提供原生代码
2026-02-03 14:42