stk*_*ent 3 android google-maps google-play-services android-maps-v2
Google Play Services 6.5添加了该getMapAsync
方法,该方法允许我们异步检索GoogleMap
支持MapFragment
(或MapView
)的对象.文件说明了这一点
回调提供的GoogleMap对象为非null.
我对这里为什么需要异步检索没有很好的理解(即,什么情况可能导致被弃用的getMap
方法返回null
),这引出了以下问题:
当使用a时MapFragment
,我应该调用getMapAsync
一次onCreate
,存储GoogleMap
回调返回的(非null),然后在我的类中的其他地方引用这个存储的结果吗?或者,我是否应该getMapAsync
每次需要与GoogleMap
对象进行交互时调用,并在相应的回调中执行所有与地图相关的工作?
第一个选项导致更紧凑的代码,所以我更愿意尽可能使用它.GoogleMap
我存储的对象是否存在"陈旧"或null
(在这种情况下第二个选项会更安全)的风险是否存在?
Google的地图相关示例,位于目录中
<path-to-sdk>/extras/google/google_play_services/samples/maps
Run Code Online (Sandbox Code Playgroud)
保持参考,所以我相信这应该没问题.
您必须使用异步调用的原因是(我猜),因为地图可能在初始化时执行网络请求(下载磁贴等,请参阅文档以获取更多信息).如果是这种情况,则需要在单独的线程上(部分)初始化映射.因此,您必须等到初始化完成后才能获得GoogleMap
.
该getMap()
函数可以GoogleMap
正确返回,但不能保证.如果你getMap()
太快调用该函数,地图将不会被初始化,它将返回null.
归档时间: |
|
查看次数: |
1330 次 |
最近记录: |