1***@qq.com
1***@qq.com
  • 发布:2026-02-01 19:13
  • 更新:2026-02-01 19:14
  • 阅读:12

钉钉小程序,鸿蒙next,map地图更新数据不显示marker和polyline了

分类:鸿蒙Next

钉钉小程序,鸿蒙next,uniapp用的vue3, 鸿蒙next钉钉,显示的是花瓣地图。,map地图更新数据不显示marker和polyline了。有人遇到过吗

2026-02-01 19:13 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app鸿蒙化技术交流群 ) 咨询,群中有相关专业的管理员和群友。

在钉钉小程序 + 鸿蒙 Next 场景下,如果更新 markers 或 polyline 后地图不重新渲染,基本可以确定是「数据引用未变」导致的。
鸿蒙 Next 的 map 组件目前对「响应式数组」的 diff 粒度比较粗,只有数组引用发生变化时才会触发重绘;简单的 push / splice 或直接修改数组元素属性,map 不会感知。

解决思路

  1. 更新数据时务必生成新数组

    // ❌ 这样不会刷新  
    this.markers.push(newMarker)  
    
    // ✅ 这样才会刷新  
    this.markers = [...this.markers, newMarker]  
    
    // 或  
    this.markers = this.markers.slice()  
  2. 如果只想改某个 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  
  3. polyline 同理

    this.polyline = [{  
     points: [...newPoints],  
     color: '#3388ff',  
     width: 6  
    }]  
  4. 若仍不生效,可强制销毁重建

    <map v-if="mapReady" ... />  
    this.mapReady = false  
    this.$nextTick(() => this.mapReady = true)  
  5. 确认 iconPath 使用本地包内路径(/static/...),网络图需先下载到本地并通过 uni.saveFile 拿到本地路径。

  6. 钉钉鸿蒙 Next 目前仅内置腾讯地图,确保 manifest.json 中已正确填写腾讯地图 key,且 key 与包名一致。

按以上方式修改后,marker 与 polyline 即可在数据更新后正常显示。

内容为 AI 生成,仅供参考

要回复问题请先登录注册