【问题标题】:Android: onMapLoaded not called when map is hidden initiallyAndroid:最初隐藏地图时未调用onMapLoaded
【发布时间】:2017-10-01 08:24:33
【问题描述】:

我的活动中有一个包含SupportMapFragmentFrameLayout。我最初已将此布局的可见性设置为隐藏。

在我的地图片段中,我已经覆盖了onMapLoaded() 方法并正在加载一些标记并使用边界进行缩放。我的活动有一些按钮,当按下这些按钮时,可以使地图可见并以该位置为中心,而不会弄乱初始缩放。

问题是,onMapLoaded 在地图变得可见之前不会被调用(即只有在通过单击按钮更改布局的可见性后才会调用它。)。因此,如果我启动我的应用并单击按钮,地图将以默认缩放为中心位于标记上。

即使地图被隐藏,我如何确保onMapLoaded 被调用?

注意我并不是想破解我的代码来实现这一点。如果我想要破解,我可以让地图可见并用一些全屏视图覆盖它以隐藏它。我正在寻找一个合适的解决方案来即使地图片段被隐藏,如何确保 onMapLoaded 被调用(如果存在这样的解决方案)

【问题讨论】:

  • 没有源代码很难帮你。
  • 好吧,粘贴完整的源代码会很混乱,因为我使用自定义架构来加载标记和缩放,但是简单的问题是“如何确保 onMapLoaded 被调用,即使地图片段被隐藏”。这是不言自明的,所以我没有发布源代码。
  • 地图无法加载的原因有很多:没有网络连接,没有权限等。试试all
  • 我认为这不是问题所在。请注意,我的地图已正确加载,但最初隐藏片段时会导致问题。即使在这种情况下,也会调用 onMapReady 但不会调用 onMapLoaded。只有当我使地图至少可见一次时才会调用它。

标签: android google-maps google-maps-api-3


【解决方案1】:

Official Documentation中所述:

public abstract void onMapLoaded ()

地图完成渲染时调用。这只会被称为 一次。如果您想收到通知,您必须请求另一个回电 再次。

这是在 Android UI 线程上调用的。

所以在隐藏地图片段时似乎无法调用它。此外,即使地图是可见的,它也被称为更新,但它“由于用户不断与地图交互,它不断变化并且永远不会完成加载。”。

【讨论】:

  • 谢谢。不能解决我的问题,但现在我知道我需要考虑最干净的 hack。 :)
  • @SiddharthGarg 欢迎您!祝你的 hack 好运 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2015-04-02
  • 1970-01-01
相关资源
最近更新 更多