Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从背景恢复后,颤振谷歌地图为空白_Android_Google Maps_Flutter_Google Maps Android Api 2_Google Maps Flutter - Fatal编程技术网

Android 从背景恢复后,颤振谷歌地图为空白

Android 从背景恢复后,颤振谷歌地图为空白,android,google-maps,flutter,google-maps-android-api-2,google-maps-flutter,Android,Google Maps,Flutter,Google Maps Android Api 2,Google Maps Flutter,我遇到了以下问题:我的颤振应用程序使用谷歌地图。贴图最初加载得很好。但是,如果我将应用程序放在后台,稍后再继续,地图将保持空白。Google徽标仍然显示,就像API密钥未指定时一样。我的多边形叠加也没有显示 这种行为不值得谴责。有时,应用程序在后台运行数小时后,地图加载正常,有时几分钟后地图空白。到目前为止,我只在Android上见过这种行为 没有指示错误的特定日志输出 有没有办法解决这个问题 我在这里用截图提交了一个问题: 编辑1: 我可以用GoogleMap作为根部件来复制它,也没有任何多边

我遇到了以下问题:我的颤振应用程序使用谷歌地图。贴图最初加载得很好。但是,如果我将应用程序放在后台,稍后再继续,地图将保持空白。Google徽标仍然显示,就像API密钥未指定时一样。我的多边形叠加也没有显示

这种行为不值得谴责。有时,应用程序在后台运行数小时后,地图加载正常,有时几分钟后地图空白。到目前为止,我只在Android上见过这种行为

没有指示错误的特定日志输出

有没有办法解决这个问题

我在这里用截图提交了一个问题:

编辑1: 我可以用GoogleMap作为根部件来复制它,也没有任何多边形/特征覆盖。此外,我还发现在某个点疯狂地放大会使地图“复活”(突然地图再次可见)。这可能是底层安卓谷歌地图SDK的已知问题吗

编辑2:
我发现地图仍在反应(例如,轻触/手势侦听器仍在触发)。此外,地图并不是真的空的,它只是变得半透明,所以屏幕显示地图后面的任何小部件

不是核心问题的解决方案,但我通过创建插件项目的分支并修改GoogleMapController.java,解决了这个bug,如下所示:

@覆盖
活动上的公共无效已使用(活动){
if(disposed | | activity.hashCode()!=registeractivityhashcode){
返回;
}
onResume();
//解决方法https://github.com/flutter/flutter/issues/40284
//这显然会强制重新渲染贴图。
if(谷歌地图!=null){
setMapType(googleMap.getMapType());
}
}

现在,在每个恢复事件中,贴图都将重新渲染。

我发现,如果点击标记或更改样式,贴图将重新渲染

class TheWidgetThatHasTheMap with WidgetsBindingObserver {

   //...your code

    @override
    void didChangeAppLifecycleState(AppLifecycleState state) {
        if (state == AppLifecycleState.resumed) {
            controller.setMapStyle("[]");
        }
    }
}

另一个不需要分叉插件、构建等的临时修复程序。

将通过
WidgetsBindingObserver
实现的
didchangeapplicystate
添加到您的小部件中,并使用状态更改重建GoogleMap小部件。

这可能是一个愚蠢的问题,但您能够缩小地图吗。从截图上看,似乎被放大到了“地面”层面。根本没有愚蠢的问题。:-)是的,它尝试过缩放,但不起作用。此外,底图是卫星地图,因此它至少会显示一些颜色。我尝试在
onmacreated
中使用
GoogleMapController
controller,但它没有
setMapStyle
method@kashlo如果您的控制器定义为Completer _controller=Completer();然后您需要首先使用最终的GoogleMapController=wait\u controller.future;检索它;。setMapStyle将显示。知道当地图位于选项卡内时该怎么做吗?DidChangeApplieCycleState没有在我的选项卡中调用,只在我的HomeWidget(包含该选项卡)中调用@Thomas我在选项卡中也遇到了同样的问题,我使用下面的代码解决了这个问题。请尝试使用此代码,并让我知道它是否适用于您。代码:SystemChannels.lifecycle.setMessageHandler((msg){debugPrint('SystemChannels>$msg');if(msg==AppLifecycleState.resume.toString())setState((){mapsController.setMapStyle([]);})@瓦贾尼基山,我会试试的。你把它放在选项卡本身的initState()中了吗?这个解决方案工作了一段时间,然后在将应用程序设置好几次后,问题再次出现