zeee
zeee
  • 发布:2024-07-25 14:29
  • 更新:2024-08-02 09:38
  • 阅读:368

【报Bug】Map组件在多个页面中引用,反复跳页后不能正常渲染,提示超出同时创建地图次数上限。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

手机系统: 全部

页面类型: nvue

vue版本: vue3

打包方式: 离线

项目创建方式: CLI

CLI版本号: 4.15

测试过的手机:

安卓主流机型,ios 16,17,17.5

操作步骤:

这个稳定复现,创建10多个nvue页面,每个页面引入map组件。然后进行跳页,跳几次之后地图就渲染不出来了。
我怀疑uniapp的map组件只有创建动作,没有销毁动作。

预期结果:

希望可以修复。或者可以提供一些手段销毁已创建的地图实例(需要支持Nvue)。

实际结果:

地图在多次跳页渲染后,不能正常显示。

bug描述:

map组件在多个页面引用,多次进行页面跳转后不能正常显示。

排查过程:

我通过原生调试,在Log中找到报错信息,如下:
Android[AndroidStudio]:

IOS[xcode]:

2024-07-25 14:29 负责人:DCloud_Android_ST 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

如果你每个页面都有个地图实例 过程中都是在跳转新页面 建议你用vif 控制下 页面hide、show处理

  • zeee (作者)


    1. IOS端确实有问题,v-if也不行

    2. 安卓端,如果把map组件封装在component里面,再在vue里面调用,v-if如果写在component里面的话,也是不管用的。只有写在最外层vue页面里才生效。


    测试方法就是,三个页面A(无地图)、B(有地图)、C(有地图) 。 然后持续进行 A -> B -> C -redirectTo-> A,反复这样几次后地图就黑掉加载不出来了。


    这两点确实是bug,我也提供过DEMO给与证明。

    我迫切的关注是何时才可以修复,这个对于围绕map构建的App(比如出行、外卖等业务)影响非常大。

    2024-08-01 10:12

  • zeee (作者)

    回复 zeee: 这个我在IM群里面和你们官方的人聊过,确定这两个问题确实是bug。

    2024-08-01 10:13

  • zeee (作者)

    我上周五在IM群里得到你们人员的回复说是本周会在Alpha版本修复,然而今天都周四了,还是没新版本。

    我的业务非常受影响,不知道你们是不是确定会修复。

    2024-08-01 10:15

  • DCloud_Android_ST

    回复 zeee: 封装在component里面 v-if不生效的问题给个完整实例

    2024-08-01 15:35

  • zeee (作者)

    回复 DCloud_Android_ST: 下方发了

    2024-08-02 09:38

zeee

zeee (作者)

Android问题Demo

  • DCloud_Android_ST

    能提供一下完整的示例demo吗 我这边配置项目还是报错比较麻烦

    2024-08-02 11:35

  • zeee (作者)

    回复 DCloud_Android_ST:

    已经很完整了啊。

    用的是vue3+ts,cli构建,版本是4.15。

    额外引入了类型提示:npm i -D @uni-helper/uni-app-types

    将UniNamespace加到.eslintrc.js的globals中可以避免ts检测不到类型

    VITE_MAP_STYLE找不到可以删掉这个变量

    然后高德地图的key因为涉及隐私,不能提供这个你们应该有吧。

    2024-08-02 17:52

  • zeee (作者)

    回复 DCloud_Android_ST: 剩下a,b,c三个页面没有啥东西。

    哦,还有我这边用的是AndroStudio和XCode的离线编译。

    2024-08-02 17:53

  • zeee (作者)

    你就用cli模式初始化vue3+typescript类型的uniapp项目,把我demo里的文件按路径放进去。

    pages.json配置下页面路由就可以了啊

    2024-08-02 17:54

  • DCloud_Android_ST

    回复 zeee: 测试vif是生效的 但也确实闪退了 但不是地图个数超了,应该是快速开关页面导致地图C层渲染异常了。这种情况还是建议别这样用地图,地图最好别出现这种可递归的场景,或app自身限制一下业务场景

    2024-08-12 18:30

  • zeee (作者)

    回复 DCloud_Android_ST: 关键在于,一些出行场景的APP,很多页面会包含地图(比如打车APP这种),很难避免多个包含地图的页面间的跳转啊。那这种情况,怎么处理。

    2024-08-13 11:12

  • zeee (作者)

    回复 DCloud_Android_ST: 而且你说生效只是安卓端吧,IOS端确实问题更大

    2024-08-13 11:14

  • DCloud_Android_ST

    回复 zeee: IOS下个alpha会解决,至于android带有地图页面频繁创建关闭导致C层渲染异常这个因素太多不好解决。你可以改为vue页面webview加载js地图临时规避下

    2024-08-13 11:26

  • zeee (作者)

    回复 DCloud_Android_ST: 这改动太大了,我需要实时绘制行驶路线,增加多个mark等操作.

    改成webview有几个问题:



    1. 全局所有的map都要改,工程量和改动成本大

    2. 性能没有nvue的好。


    希望官方可以修复啊,不能因为不好解决而不解决,这个不是做不好产品或程序不稳定的正当理由啊。

    因为你们在文档中提到app非常建议使用nvue的map组件,现在又说crash问题不好解决我认为这样的不妥的。


    也要考虑的用户的改动成本啊....

    还有就是IOS端的改动什么时候发布,等了半个多月了已经

    2024-08-13 13:43

  • DCloud_Android_ST

    回复 zeee: 临时方案接受不了那就等等。肯定要解决的,地图是高德平台SDK,问题同步给高德到解决周期会比较长。不确定什么时候能解决。你要是着急可以走付费定制。 alpha发版时间不是太确定本周尽量发版

    2024-08-13 15:16

  • zeee (作者)

    回复 DCloud_Android_ST: 尽快吧

    2024-08-13 16:32

要回复问题请先登录注册