1***@163.com
1***@163.com
  • 发布:2026-07-08 14:38
  • 更新:2026-07-08 14:39
  • 阅读:29

【报Bug】IOS进入导航8-10次高德地图渲染黑屏问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 5.14

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: IPhone

页面类型: nvue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<navi_ride_route v-if="currentStatus === TripStatus.GOING_TO_START" key="'rideroute' + componentKey.ride" ref="rideRoute"
></navi_ride_route>
<navi_ride
v-if="currentStatus === TripStatus.ARRIVED_AT_START" key="'ride_' + componentKey.ride_navi" ref="rideNavi"
></navi_ride>
<navi_drive_route
v-if="currentStatus === TripStatus.GOING_TO_END" key="'driveroute' + componentKey.drive" ref="driveRoute"
></navi_drive_route>
<navi_drive
v-if="currentStatus === TripStatus.ARRIVED_AT_END" key="'drive_' + componentKey.drive_navi" ref="driveNavi"
></navi_drive>

操作步骤:

代驾司机导航。需要多次进去导航页面

预期结果:

可以正常使用导航

实际结果:

现在进入多次导航地图渲染成黑色的了

bug描述:

IOS进入导航8-10次高德地图渲染黑屏问题,业务场景:代驾司机导航。需要多次进去导航页面,在主页面上将骑行路线规划,骑行导航,驾车路线规划,驾车导航引进来,通过状态控制显示某一个,具体代码如下

2026-07-08 14:38 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

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

感谢您的反馈。针对您提交的 Bug,官方评审意见如下:

1. Bug 反馈内容完整性分析

  • BUG 描述:描述较为清晰,说明了 iOS 端多次进入导航页面后高德地图渲染黑屏的现象,并给出了代驾司机导航的业务场景。
  • 代码示例缺失。未提供任何可复现的代码片段,官方人员无法直接运行排查,需要您补充包含 <map> 组件或导航逻辑的代码示例。
  • 复现步骤:过于简略(仅写“代驾司机导航。需要多次进去导航页面”),未说明是使用 uni.navigateTo 还是 uni.navigateBack,也未说明是否使用了 v-if 控制地图显隐。建议补充具体的页面路由跳转操作。
  • 预期与实际结果:合理且明确,预期正常导航,实际多次进入后黑屏。
  • 分类信息:完整,包含了 HBuilderX 版本(5.14 正式版)、iOS 平台、Vue2 等关键信息。

2. Bug 是否成立及分析

该 Bug 现象成立,但属于已知的高德地图 SDK 限制问题,并非框架本身 Bug。

根据官方文档及社区历史反馈:

  • 实例数量限制:App 端 map 组件实例同时存在个数有上限(大概 10 个),超过后会显示黑色。高德地图 SDK 不支持同时存在多个实例,多次创建和销毁极易触发黑屏。参考文档:map 组件注意事项
  • 版本与路由影响:在 IOS 高德地图第10次渲染 黑屏问题 中官方曾说明 HBuilderX 4.25+ 版本已解决部分此问题。同时指出,若使用 uni.navigateTo 跳转,原页面未销毁会导致地图实例未释放;改用 uni.navigateBack 关闭当前页面时会自动销毁页面上所有组件,从而避免黑屏。

3. 解决方案建议

由于您使用的是 5.14 正式版,建议通过以下方式规避该问题:

  1. 控制实例销毁:确保在离开导航页面时彻底销毁地图组件。建议使用 uni.navigateBack 返回上一页,而不是 uni.navigateTo 层层叠加页面。如果必须用 v-if,请在页面隐藏时及时设置为 false
  2. 位移替代显隐:如果业务需要频繁切换,可尝试不销毁地图,而是使用 position 将地图组件移动到屏幕显示区域之外,需要时再移动回来,避免反复创建和销毁。
  3. 使用原生导航:如果是单纯的导航需求,可使用 plus.maps.openSysMap 调用系统第三方程序进行导航,参考文档:plus.maps.openSysMap。也可以在插件市场搜索相关的原生导航插件,例如:高德导航地图导航

建议您先按照上述方案调整路由跳转方式和组件销毁逻辑,看是否能解决黑屏问题。如果仍有疑问,请补充完整的代码示例和详细复现步骤。

内容为 AI 生成,仅供参考

要回复问题请先登录注册