Google Play Services 6.5添加了getMapAsync
方法,該方法允許我們異步檢索支持MapFragment
(或MapView
)的GoogleMap
對象。文檔指出getMapAsync() - 調用一次並保存結果,或每次需要地圖時調用?
回調提供的GoogleMap對象非空。
我沒有,爲什麼這裏需要異步檢索非常瞭解(即什麼情況下可能會導致過時getMap
方法返回null
),這使我對以下問題:
在使用MapFragment
時,我應該在onCreate
中撥打getMapAsync
一次,存儲回調返回的(非空)GoogleMap
,然後在我的課程的其他地方引用此存儲結果? 或,我應該每次撥打getMapAsync
我需要與GoogleMap
對象進行交互,並且做全部與地圖相關的工作在相應的回調裏面?
第一個選項導致代碼更緊湊,所以如果可能的話我寧願使用它。是否存在我存儲的GoogleMap
對象可能會變爲「陳舊」或null
(在這種情況下第二種選擇會更安全)的風險?
謝謝,參考樣品是一個好主意!特別是,'CameraDemoActivity'是一個例子'Activity',它在異步檢索後存儲對'GoogleMap'對象的引用。只是想在評論中補充一下,以幫助他人立即找到一個具體的例子。 – stkent 2015-02-10 14:56:23
即使存在網絡連接,我也可以確認舊的getMap()函數有時會返回null。這種情況很少發生,但發生了。新的getMapAsync()和OnMapReady()函數保證GoogleMap非空。 – 2016-01-23 21:12:15