Android でプレミアム プランを使用する

Google Maps APIs Premium Plan ライセンスでは、Google Maps Android API の拡張サポートを利用できます。 このドキュメントでは、Premium Plan と Google Maps Android API を使用して Android アプリを作成する方法について説明します。

概要

このページに記載された手順に従って SDK をダウンロードし、プロジェクトをセットアップしてマップを追加します。 必要なステップの概要は次のとおりです。

  1. SDK をダウンロードします。
  2. SDK を新規または既存の Android プロジェクトに追加します。
  3. API キーをアプリのマニフェストに追加します。
  4. 必要な Android パーミッションと OpenGL ES バージョン 2 を指定します。
  5. マップを追加します。

SDK をダウンロードする

SDK を静的ライブラリとしてダウンロードするか、Android SDK Manager を使用できます。

オプション 1: SDK を静的ライブラリとしてダウンロードする

最新リリースを静的ライブラリとしてダウンロードします。

オプション 2: Android SDK Manager を使用して、SDK をダウンロードする

Android Studio で行う手順:

  1. [Tools] > [Android] > [SDK Manager] を選択します。
  2. [Appearance & Behavior] > [System Settings] > [Android SDK] を選択します。
  3. [SDK Update Sites] タブをクリックします。
  4. プラス記号(+)アイコンをクリックして、新しいサイトを追加します。
  5. "Google Maps for Work" などの名前と URL https://dl.google.com/geosdk/android-m4b-addon.xml を入力します。
  6. [OK] をクリックします。
  7. [SDK Tools*] タブをクリックします。
  8. [Google Maps Mobile SDK for Work] を選択して、[OK] をクリックし、ダウンロードを完了します。

Android Studio によって、ライブラリが <android-sdk-folder>/extras/google/maps_for_business_sdk/ にインストールされます。

Android SDK Manager をスタンドアロン ツールとして使用する手順については、Android SDK Manager のガイドをご覧ください。

SDK をプロジェクトに追加する

Android Studio で行う手順を以下に示します。 別のツールを使用している場合は、Android ドキュメントに記載されているコマンドラインの使用方法の手順をご覧ください。

Premium Plan の Google Maps Android API は、aar バンドル(google-maps-sdk-m4b.aar)とライブラリ モジュール(google-maps-sdk-m4b_lib)の 2 つの形式があります。 最適な形式を選択してください。

オプション 1: aar バンドルから SDK をインポートする

次の手順を実行して、aar バンドル(google-maps-sdk-m4b.aar)を Android Studio プロジェクトに追加します。

  1. Google Maps APIs Premium Plan がある以下の場所を参照します。

    <android-sdk>/extras/google/maps_for_business_sdk

  2. google-maps-sdk-m4b.aar ファイルをプロジェクトの libs ディレクトリにコピーします (このディレクトリが存在しない場合、ディレクトリを作成してください)。

  3. 次のコードを build.gradle ファイルに追加します。

    dependencies {
        compile(name:'google-maps-sdk-m4b', ext:'aar')
    
    }
    
    repositories {
        flatDir{
            dirs 'libs'
        }
    }
    
  4. 以下で説明する設定手順を実行します。

オプション 2: SDK をライブラリ モジュールとしてインポートする

aar ファイルを使用する代わりに、次の手順を実行して、SDK ライブラリ モジュール(google-maps-sdk-m4b_lib)を Android Studio の既存のプロジェクトに追加できます。

  1. Android Studio で、新しいモジュールをインポートするためのオプションを選択します([File] -> [New] -> [Import Module])。

  2. SDK がある以下の場所を参照します。

    <android-sdk>/extras/google/maps_for_business_sdk

  3. google-maps-sdk-m4b_lib ディレクトリを選択して、[Choose] をクリックします。

  4. インポート ウィザードでデフォルト値を受け入れます。
  5. [Finish] をクリックします。 インポート プロセスの結果をまとめたテキスト ファイルが表示されます。

  6. ライブラリが settings.gradle ファイルに含まれていることを確認します。

    include ':googlemapssdkm4b_lib'

  7. モジュールの依存関係をアプリの build.gradle ファイルに追加します。

    compile project(':googlemapssdkm4b_lib')

Google Play サービスを使用する既存の設定を変更する

  1. Google Play サービスを使用する既存のアプリがある場合、com.google.android.gms.maps パッケージへのすべての参照を com.google.android.m4b.maps に置き替えます。

  2. XML レイアウト属性へのすべての参照に接頭辞 m4b_ を付けます。 例: m4b_mapTypem4b_cameraZoom

アプリのマニフェストで設定を指定する

Google Maps Android API を使用する Android アプリでは、マニフェスト ファイル AndroidManifest.xml で以下の設定を指定する必要があります。

API キー

認証ガイドで説明しているように、プロジェクトの API キーを生成して、AndroidManifest.xml にそのキーを追加します。

パーミッション

アプリケーションに必要なパーミッションを指定します。このためには、AndroidManifest.xml で、<manifest> 要素の子要素として <uses-permission> 要素を追加します。

位置パーミッション

現在地レイヤーを有効にすることでアプリケーションがユーザーの現在地にアクセスする場合は、位置データに関する説明に従って、位置パーミッションをリクエストする必要があります。

外部ストレージ パーミッション

バージョン 8.3 以降の Google Play サービス SDK が対象の場合は、WRITE_EXTERNAL_STORAGE パーミッションがなくても Google Maps Android API を使用できるようになりました。

それより前のバージョンの Google Play サービス SDK が対象の場合は、android.permission.WRITE_EXTERNAL_STORAGE パーミッションをリクエストする必要があります。

<uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

注: アプリが API レベル 23(Android 6.0)を対象としている場合、このレベルでは実行時パーミッションを使用する必要があるため、バージョン 8.3 以降の Google Play サービス SDK を対象にする必要があります

パーミッションはマニフェストに自動的に結合される

次のパーミッションは、Google Play サービスのマニフェストで定義されているもので、ビルド時に自動的にアプリのマニフェストに結合されます。これらを明示的にマニフェストに追加する必要はありません

  • android.permission.INTERNET - Google マップサーバーからマップタイルをダウンロードするために API によって使用されます。
  • android.permission.ACCESS_NETWORK_STATE - データをダウンロードできるかどうかを判別するために、API が接続ステータスをチェックできるようにします。

OpenGL ES バージョン 2

Google Maps Android API は、OpenGL ES バージョン 2 を使用してマップをレンダリングします。次の設定は、Google Play サービスのマニフェストで定義されており、ビルド時に自動的にアプリのマニフェストに統合されます。この設定を明示的にマニフェストに追加する必要はありません。

<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>

これにより、外部サービスに要件が通知されます。具体的には、OpenGL ES バージョン 2 をサポートしていない端末では、Google Play ストアにそのアプリが表示されなくなります。

マップの追加

アプリが適切に設定されているかどうかをテストする最も簡単な方法は、シンプルなマップを追加することです。

注: 以下のコードは本稼働用のアプリに使用しないでください。

  1. activity_main.xml に、次のフラグメントを追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/map"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:name="com.google.android.m4b.maps.MapFragment"/>
    
  2. MainActivity.java に、次のコードを追加します。

    package com.example.mapdemo;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }
    

アプリをビルドして実行する

アプリをビルドして実行すると、 マップが表示されるはずです。

トラブルシューティング:

  • マップが表示されない場合は、このドキュメントの上記のすべての手順を完了していることを確認してください。 特に、正しい API キーを使用していることに加え、Google Maps APIs Premium Plan サービスに対してアカウントが有効になっていることを確認してください。

  • プロジェクトのメソッド数が制限を超えていると、次のエラーが表示されることがあります。

    Unable to execute dex: method ID not in [0, 0xffff]: 65536

    原因とソリューションの詳細については、Android デベロッパー ガイドの 65K を超えるメソッドを使用するアプリのビルドをご覧ください。

  • プロジェクトで Guava を既に使用している場合、次のようなクラス競合エラーが表示されることがあります。

    com.android.dex.DexException:Multiple dex files define Lcom/google/common/annotations/Beta

    この問題を解決するには、google-maps-sdk-m4b_lib/libs ディレクトリから Guava のコピーを削除します。

詳細

既存のアプリを移行する方法

Premium Plan で利用可能な Android API は、標準の Google Maps Android API とほぼ同じように動作するように設計されています。

そのため、移行プロセスは簡単です。

  1. Premium Plan の Google Maps Android API をダウンロードし、上述の方法で SDK をプロジェクトに追加します。

  2. com.google.android.gms.maps パッケージへのすべての参照を com.google.android.m4b.maps に置き替えます。

  3. XML レイアウト属性へのすべての参照に接頭辞 m4b_ を付けます。 例: m4b_mapTypem4b_cameraZoom

  4. 認証ガイドで説明しているように、プロジェクトの新しい API キーを生成して、AndroidManifest.xml にそのキーを追加します。

  5. アプリをビルドします。

バージョンの比較

次の表は、標準の Google Maps Android API を使用する場合と、Premium Plan で API を使用する場合の主な違いを示しています。

  標準の Google Maps Android API Premium Plan
パッケージ名 com.google.android.gms.maps com.google.android.m4b.maps
レイアウト ファイル内の XML 属性 接頭辞なしの属性名を使用します。 例: mapType すべての属性名に接頭辞 m4b_ を付けます。 例: m4b_mapType。 詳細については、XML 属性に関するドキュメントをご覧ください。
ダウンロードする場所 Google Play サービスに含まれています 静的ライブラリとして入手できます。
サポート チャンネル コミュニティベースのサポート プレミアム サポートの利用
利用規約 Google Maps APIs 利用規約の対象となります Google Maps APIs Premium Plan の利用規約に従います。

Google Play サービス

標準の Google Maps Android API には、Google Play サービス APK と Google Play サービス クライアント ライブラリの両方が必要です。 ただし、Google Maps APIs Premium Plan で SDK を使用する場合は、Google Play サービス APK をターゲット端末にインストールしていれば、クライアント ライブラリは必要ありません。

アプリを Premium Plan に移行する場合、プロジェクトから Google Play サービス SDK を削除する必要はありません。

ただし、com.google.android.gms.maps パッケージへの参照を削除する必要があります。 Google Play サービスには、任意のバージョンの Google Maps Android API とその他の Google サービスが含まれています。 アプリ内で Play サービスを利用して、他の Google API を使用する場合は、Premium Plan SDK(com.google.android.m4b.maps パッケージ)のみを使用してマップにアクセスする必要があります。

Google Play サービス クライアント ライブラリは必須ではありませんが、このクライアント ライブラリを含めると、Google+ や Location API などの他の Google API を活用できます。

サンプルコード

GitHub の Google マップ リポジトリには、Android アプリでの Google Maps Android API の使用方法を示すいくつかのサンプルがあります。

サンプルアプリでは、Premium Plan で使用する com.google.android.m4b.maps ではなく、com.google.android.gms.maps パッケージを使用していることに注意してください。

また、サンプルアプリでは、デモの一部に Location API を使用しているため、Google Play サービス SDK が必要です。

デベロッパー ガイドの各ページにはコード スニペットも用意されています。

ドキュメント

Google Maps APIs Premium Plan に関する主な情報ソースは、Google のサイト上の他のページで公開されているデベロッパー ガイドとリファレンス ドキュメントです。