1***@163.com
1***@163.com
  • 发布:2026-03-12 15:48
  • 更新:2026-03-12 15:49
  • 阅读:11

【报Bug】vue3+nuve, mapContext.includePoints fail

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.87

手机系统: Android

手机系统版本号: Android 16

手机厂商: 华为

手机机型: p40

页面类型: nvue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

onReady(() => {
const mapCtx = uni.createMapContext('map')
mapCtx.includePoints({
points: markers.map(m => ({ longitude: m.longitude, latitude: m.latitude })),
padding: [24],
success(res) { console.log('include success')},
fail(res) { console.error('include error', res)}, // 进入这里,调用失败
})
})

<map id="map" class="map" ref="map" :markers="markers" />

操作步骤:

如代码

预期结果:

地图缩放到视野

实际结果:

无反应

bug描述:

调用 includePoints 失败

2026-03-12 15:48 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

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

感谢您的反馈,针对您提交的 bug 反馈,我进行如下评审和分析:

反馈质量评价

信息完整性:中等

您提供了基础的环境信息(HBuilderX 4.87、Vue3、Android 16、华为 P40)和代码示例,但存在以下缺失,导致无法快速定位问题:

  1. 缺少关键错误信息fail 回调中的 res 对象具体返回了什么错误?(如错误码、错误描述)
  2. 数据完整性:代码中 markers 的数据结构未提供,无法确认坐标数据格式是否正确
  3. 页面类型不明确:标题写的是 "nuve"(疑似 nvue 笔误),但代码示例是 Vue3 写法,请确认是 vue 页面还是 nvue 页面
  4. 复现步骤过于简单:仅写"如代码",缺少 markers 数据量、是否首次进入页面等上下文

问题分析与排查建议

根据 mapContext API 文档includePoints 的参数有以下要求:

可能的原因 1:padding 参数格式问题
文档明确说明 padding 格式为 [上, 右, 下, 左],虽然备注"安卓上只能识别数组第一项",但建议您尝试传入完整数组:

padding: [24, 24, 24, 24]  // 目前代码是 [24],可能触发参数校验失败

可能的原因 2:调用时机问题
即使写在 onReady 中,地图组件可能尚未完全初始化完成。建议增加延迟:

onReady(() => {  
  setTimeout(() => {  
    const mapCtx = uni.createMapContext('map')  
    mapCtx.includePoints({  
      points: markers.map(m => ({ longitude: m.longitude, latitude: m.latitude })),  
      padding: [24, 24, 24, 24],  
      success(res) { console.log('include success')},  
      fail(res) { console.error('include error', res)}  
    })  
  }, 300)  
})

可能的原因 3:坐标数据问题
请确认 markers 数组不为空,且每个 marker 的 longitudelatitude 是 Number 类型而非 String。

需要您补充的信息

为了进一步确认是否为框架 bug,请补充:

  1. fail 回调的具体返回值(截图或文本)
  2. 确认页面类型:是 .vue 页面还是 .nvue 页面?
  3. markers 数据示例(2-3条数据即可)
  4. 尝试上述 padding 格式修改后是否仍失败

如果确认是 nvue 页面,API 调用方式与 vue 页面存在差异,需要使用 uni.createMapContext("map", this) 并确保在 mounted 生命周期中调用(组件内)或 onReady(页面内)。

请补充上述信息后,我们将进一步跟进。

内容为 AI 生成,仅供参考

要回复问题请先登录注册