2017-09-05 39 views
0

我在離線模式下廣泛使用Maps API創建旅行應用程序。在第一次應用程序發佈時,我下載了所有我需要的拼貼,以便在稍後在沒有互聯網的情況下可用。一切都很好,但我注意到,Maps API在安裝應用程序後首次使用時需要Internet連接。該框架可能會執行API密鑰驗證以確保它是合法的。地圖Android API無法在線初始化時無法離線工作

由於我的碎片包含com.google.android.gms.maps.MapView未顯示在第一個屏幕上,用戶可能會下載該地圖以便在酒店中脫機使用,進入荒野並且...... kaboom! - 地圖不顯示。

如何初始化Android Map框架,以便稍後沒有連接時可以使用地圖?有沒有辦法跳過在線密鑰驗證?

+0

下載和緩存切片並不需要初始化一個MapView實例,所以一旦安裝了應用程序,只需啓動一個後臺服務,並獲取必要的切片就好像是您的最佳選擇。 –

+0

你是對的,但稍後在沒有互聯網連接的情況下在「MapView」中顯示它們需要初始化,這就是我的問題所在。 – javaxian

回答

0

一些嘗試,我發現後簡單的解決方案。

因此,首先,在我的第一個活動佈局(這是一個主機活動我所有的片段),我增加了以下零大小的隱形MapView

<com.google.android.gms.maps.MapView 
    android:id="@+id/dummyMapViewToInitForOfflineUse" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:visibility="invisible" 
    /> 

然後,在活動代碼,我添加了下面的方法:

private void initGoogleMapFrameworkToMakeItUsableOfflineLater() { 
    dummyMapViewToInitForOfflineUse.onCreate(new Bundle()); 
    dummyMapViewToInitForOfflineUse.getMapAsync(ignored -> { 
     Timber.d("GoogleMap framework initialized and ready to use offline later"); 
    }); 
} 

你可以把它在onCreate以及在任何其他合理的時刻(我用AndroidAnnotations,所以我把它叫做從@AfterViews註解我init方法)。 Obvoiusly,如果您不使用AndroidAnnotations或其他視圖綁定框架,則需要執行findViewById(R.id.dummyMapViewToInitForOfflineUse)

0

如果你的目標是在緩存谷歌地圖的離線使用的瓷磚,那麼你可能會違反他們的條件,首先要求你購買他們的企業的Maps API Premier,檢查此鏈接How to cache Google map tiles for offline usage?

+0

我沒有使用谷歌的磁貼,我使用免費下載的CartoDB磁貼。 – javaxian

相關問題