2017-09-05 8 views
0

私が作成する旅行アプリでは、Android Android APIをオフラインモードで幅広く使用しています。最初のアプリの起動時に、必要なすべてのタイルをダウンロードして、後でインターネットなしで利用できるようにします。すべてうまくいっていますが、Maps APIはアプリのインストール後に最初にインターネットに接続する必要があることに気付きました。フレームワークはおそらく、合法であることを確認するためにAPIキー検証を実行します。Mapsオンライン初期化なしでAndroid APIがオフラインで動作しない

com.google.android.gms.maps.MapViewを含む私の断片は、最初の画面に表示されないので、ユーザーがホテルでオフラインで使用するためにマップをダウンロードし、野生に入ってしまう危険性があります。 - 地図は表示されません。

Androidマップフレームワークを初期化して、後でマップに接続がないときに利用できるようにするにはどうすればよいですか?オンラインキー検証をスキップする方法はありますか?

+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メソッドからそれを呼ばれます)。 AndroidAnnotationsやその他のビューバインディングフレームワークを使用しない場合は、findViewById(R.id.dummyMapViewToInitForOfflineUse)を実行する必要があります。

0

あなたは、あなたが彼らの規約に違反することができるオフラインで使用するためにキャッシュグーグルマップのタイルを目指している場合は、あなたが最初に、企業マップのAPIプレミアを購入する必要があり、いくつか試して私が見つけた後は、このリンクにHow to cache Google map tiles for offline usage?

+0

Googleのタイルを使用していないので、無料でダウンロードできるCartoDBタイルを使用します。 – javaxian

関連する問題