业务代码不方便贴
- 发布:2026-05-21 14:10
- 更新:2026-05-21 14:32
- 阅读:17
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 10 家庭中文版 21H2
HBuilderX类型: 正式
HBuilderX版本号: 5.07
手机系统: Android
手机系统版本号: Android 9.0
手机厂商: 模拟器
手机机型: 雷电
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
预期结果:
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
实际结果:
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
bug描述:
1、主页面是vue,使用subNvue实现的地图,在subNvue中使用uni.createMapContext()获取到的地图对象调用方法不生效;比如聚合的initMarkerCluster等等。
2、地图缩放事件regionchange返回的e.scale是undefined
3、使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退
2 个回复
Ask小助手
感谢你的反馈,我们仔细查看了你提交的内容。从官方评审角度看,这份 bug 反馈在完整性上还有比较大的提升空间,主要问题在于:
createMapContext返回的对象方法不生效、initMarkerCluster无效这类问题,至少需要提供一个最小化的 nvue/subNVue 页面,包含<map>组件、获取 context 并调用方法的片段。joinCluster)、以及操作后有无任何报错日志或界面异常截图。缺少这些线索,我们很难判断是配置问题还是引擎 bug。initMarkerCluster后是否有 success/fail 回调,regionchange的参数到底返回了什么。更精确的信息可以帮助我们快速定位。针对你反馈的三个现象,我结合知识库和已有信息给出一些分析:
关于
uni.createMapContext获取的对象调用initMarkerCluster等方法不生效initMarkerCluster在App-nvue 3.1.0+中是明确支持的(文档)。但如果是在 subNVue 子页面中使用,需要注意uni.createMapContext需要正确传入当前页面的实例this,并且map组件的id必须与 pages.json 中 subNVue 页面内的 map id 一致。历史问答中也出现过在 nvue 中调用mapContext方法无回调的情况(ISSUE #174930),这可能与页面的生命周期以及数据赋值时机有关。建议提供简化版示例,我们再根据回调信息确认。关于
regionchange事件e.scale为undefined这实际上是一个已经被反馈过的已知问题。nvue 下 map 组件的
regionchange事件缺少了和小程序一样的e.detail.scale参数,已有多位开发者提过(ISSUE #199152)。目前一个可行的替代方案是,在regionchange的 end 阶段调用mapContext.getScale()来获取最新的缩放值。若你希望彻底补齐这个事件参数,可以到 issue 系统建议我们推进修复。关于
joinCluster为 true 时缩放闪退这很可能与早期版本中
addMarkers频繁调用或聚合点过多导致崩溃有关。3.4.6 版本曾修复过“nvue map 组件使用高德地图时频繁调用 addMarkers 增加聚合点可能引起崩溃”的问题(release-archive)。你当前使用的 HBuilderX 5.07 理论上已经包含该修复,但仍有用户反馈在开启聚合后缩放拖拽时闪退(ISSUE #196643)。建议检查一下 markers 数量是否过大,或者是否存在不间断调用addMarkers的逻辑。闪退如果必现,请务必提供一个最小复现 demo(含少量 markers 即可),我们可以在新版上进一步验证和修复。最后还有一个重要的方向性建议:nvue 目前已不再作为主要维护方向,官方更推荐使用 uni-app x(uvue)进行原生地图开发。如果你的项目已到需要考虑长期稳定性的阶段,可以考虑逐步迁移到 uni-app x,其中的 map 组件在 Android/iOS/鸿蒙平台是真正的原生高性能地图,既可以避免层级问题,也能获得更好的聚合和缩放操作稳定性。你可以参考高德地图组件这类基于 uni-app x 的插件来降低迁移成本。
如果你希望我们继续排查当前 nvue 环境下的问题,请务必补充一个最小化的、可独立运行的复现项目(只包含 subNVue 的地图页和少量 markers 数据),并说明是使用自定义基座还是云打包、是否开启了 App 分包等信息。有了这些素材,我们可以更高效地给出确切结论。
用户3066482 (作者)
补充第3个问题 “使用高德的key在subNvue中标点joinCluster设置为true后缩放几次后应用会闪退”
用户3066482 (作者)
在customCallout自定义气泡窗口display值设置为ALWAYS时应用缩放几次会闪退,如果不设置customCallout或者display设置为BYCLICK并不会闪退
2026-05-21 14:37
要回复问题请先登录或注册
公告
更多>相关问题