Maps SDK for Android のクイックスタート

Android Studio 用の Google マップ テンプレートを使用して、地図を表示する Android アプリを作成します。既存の Android Studio プロジェクトを設定する場合は、プロジェクトの設定をご覧ください。

このクイックスタートは、Java または Kotlin を使用する基本的な Android 開発に精通しているデベロッパーを対象としています。

開発環境を設定する

  1. Arctic Fox 以降の Android Studio が必要です。お持ちでない場合は、ダウンロードしてインストールしてください。
  2. Android Studio で Android Gradle プラグイン バージョン 7.0 以降を使用していることを確認してください。

Android デバイスを設定する

Maps SDK for Android を使用するアプリを実行するには、Android 4.0 以降をベースとし Google API を含む Android デバイスまたは Android Emulator にアプリをデプロイする必要があります。

Android Studio で Google マップ プロジェクトを作成する

  1. Android Studio を開き、[Welcome to Android Studio] ウィンドウで [Create New Project] をクリックします。

  2. [New Project] ウィンドウで、[Phone and Tablet] カテゴリの [Google Maps Activity] を選択し、[Next] をクリックします。

  3. 以下のように [Google Maps Activity] フォームに入力します。

    • [Language] を Java または Kotlin に設定します。Maps SDK for Android では、どちらの言語も完全にサポートされています。Kotlin について詳しくは、Kotlin で Android アプリを開発するをご覧ください。

    • [Minimum SDK] は、テストするデバイスと互換性がある SDK のバージョンに設定します。Maps SDK for Android 18.0.x の要件を満たすバージョンを選択してください。現在は Android API レベル 19(Android 4.4 KitKat)以上が必要です。SDK バージョン要件についての最新情報はリリースノートでご確認ください。

  4. [Finish] をクリックします。

    Android Studio により Gradle が開始され、プロジェクトがビルドされます。この処理には、しばらく時間がかかることがあります。

  5. ビルドが完了すると、Android Studio が AndroidManifest.xml ファイルと MapsActivity ファイルを開きます。アクティビティの名前が異なる場合がありますが、これはセットアップ時に設定した名前になります。

  6. AndroidManifest.xml ファイルには、Google Maps API キーを取得して local.properties ファイルに追加する手順が記載されていますが、実際には AndroidManifest.xml ファイルに API キーを保存しないように注意してください。この保存方法では、後述の方法ほど安全に API キーを保存できません。代わりに、後続のセクションの説明に従って Cloud プロジェクトを作成し、API キーの設定を行います。

Google Cloud プロジェクトをセットアップする

以下の各タブをクリックして、Cloud Console の設定を完了してください。

ステップ 1

コンソール

  1. Google Cloud Console の [プロジェクトの選択] ページで [新しいプロジェクト] をクリックし、新しい Cloud プロジェクトの作成を開始します。

    [プロジェクトの選択] ページに移動

  2. Cloud プロジェクトで お支払いが有効になっていることを確認します

    Google Cloud では、無料トライアルを提供しています。トライアルは、90 日が経過するか、アカウントの費用が 300 ドルに達した時点のいずれか早い方の時点で終了します。解約はいつでも可能です。Google Maps Platform では、クレジット(毎月 200 ドル分)が付与されます。詳しくは、請求先アカウントのクレジットおよび Google Maps Platform の料金をご覧ください。

Cloud SDK

gcloud projects create "PROJECT"

詳しくは、Google Cloud SDKCloud SDK のインストール、および以下のコマンドをご覧ください。

ステップ 2

Google Maps Platform を使用するには、プロジェクトで使用する API または SDK を有効にする必要があります。

コンソール

Maps SDK for Android を有効化

Cloud SDK

gcloud services enable \
    --project "PROJECT" \
    "maps-android-backend.googleapis.com"

詳しくは、Google Cloud SDKCloud SDK のインストール、および以下のコマンドをご覧ください。

ステップ 3

このステップでは API キーを作成します。本番環境で API キーを使用する場合は、API キーを制限することを強くおすすめします。詳しくは、各サービスの API キーの使用ページをご覧ください。

API キーは、使用量を正確に集計して課金するため、プロジェクトに関連付けられたリクエストであることを認証する一意の識別子です。少なくとも 1 つの API キーをプロジェクトに関連付ける必要があります。

API キーを作成するには:

コンソール

  1. [Google Maps Platform] > [認証情報] ページに移動します。

    [認証情報] ページに移動

  2. [認証情報] ページで、[認証情報を作成] > [API キー] をクリックします。
    [API キーを作成しました] ダイアログで、新しく作成された API キーが表示されます。
  3. [閉じる] をクリックします。
    新しい API キーは、[認証情報] ページの [API キー] に一覧で表示されます。
    (本番環境で使用する前に必ず API キーを制限するようにしてください)

Cloud SDK

gcloud alpha services api-keys create \
    --project "PROJECT" \
    --display-name "DISPLAY_NAME"

詳しくは、Google Cloud SDKCloud SDK のインストール、および以下のコマンドをご覧ください。

アプリに API キーを追加する

このセクションでは、アプリで安全に参照されるように API キーを保存する方法を説明します。API キーは、バージョン管理システムにはチェックインせず、プロジェクトのルート ディレクトリにある local.properties ファイルに保存することをおすすめします。local.properties ファイルについて詳しくは、Gradle プロパティ ファイルをご覧ください。

このタスクを効率化するには、Android 用 Secrets Gradle プラグインを使用します。プラグインをインストールして API キーを保存するには:

  1. Android Studio でプロジェクト レベルの build.gradle ファイルを開き、buildscript の配下にある dependencies 要素に次のコードを追加します。
    plugins {
        // ...
        id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
    }
  2. 次に、モジュール レベルの build.gradle ファイルを開き、次のコードを plugins 要素に追加します。
    id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin'
        
  3. ファイルを保存して、プロジェクトを Gradle と同期します
  4. プロジェクト レベルのディレクトリで local.properties を開き、次のコードを追加します。YOUR_API_KEY は実際の API キーに置き換えてください。
    MAPS_API_KEY=YOUR_API_KEY
        
  5. ファイルを保存します。
  6. AndroidManifest.xml ファイルで com.google.android.geo.API_KEY に移動し、android:value attribute を次のように更新します。
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
        

注: 上記のように、com.google.android.geo.API_KEY は、API キーとして推奨されるメタデータ名です。この名前のキーは、Android プラットフォームで Google マップベースの複数の API(Maps SDK for Android など)の認証に使用できます。下位互換性を確保するため、API では com.google.android.maps.v2.API_KEY という名前もサポートされています。この従来の名前は、Android Maps API v2 の認証にのみ使用できます。アプリでは、API キーのメタデータ名を 1 つのみ指定できます。両方を指定すると、API から例外がスローされます。

コードを確認する

テンプレートで提供されるコードを確認します。特に、Android Studio プロジェクト内の以下のファイルを確認してください。

マップ アクティビティ ファイル

マップ アクティビティ ファイルは、アプリのメイン アクティビティです。このファイルには、地図を管理し表示するためのコードが格納されます。アクティビティを定義するファイルのデフォルトの名前は MapsActivity.java です(アプリの言語として Kotlin を設定した場合は MapsActivity.kt)。

マップ アクティビティの主な要素は次のとおりです。

  • SupportMapFragment オブジェクトは、アプリの UI の親要素であり、地図のライフサイクルを管理します。

  • GoogleMap オブジェクトは、地図のデータおよびビューへのアクセスを提供します。これは、Maps SDK for Android のメインクラスです。SupportMapFragment オブジェクトと GoogleMap オブジェクトについて詳しくは、地図オブジェクトのガイドをご覧ください。

  • moveCamera 関数は、オーストラリアのシドニーの LatLng 座標に地図の中心を合わせます。通常、地図を追加する際に最初に設定するのは、地図の場所とカメラの設定(表示角度、地図の向き、ズームレベルなど)です。詳しくは、カメラとビューのガイドをご覧ください。

  • addMarker 関数は、シドニーの座標にマーカーを追加します。詳しくは、マーカーのガイドをご覧ください。

マップ アクティビティ ファイルには、以下のコードが含まれています。

Java

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     *
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions()
                .position(sydney)
                .title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

      

Kotlin

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

internal class MapsActivity : AppCompatActivity(), OnMapReadyCallback {

    private lateinit var mMap: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_maps)
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        val mapFragment = supportFragmentManager
            .findFragmentById(R.id.map) as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    /**
     * Manipulates the map once available.
     * This callback is triggered when the map is ready to be used.
     * This is where we can add markers or lines, add listeners or move the camera. In this case,
     * we just add a marker near Sydney, Australia.
     * If Google Play services is not installed on the device, the user will be prompted to install
     * it inside the SupportMapFragment. This method will only be triggered once the user has
     * installed Google Play services and returned to the app.
     */
    override fun onMapReady(googleMap: GoogleMap) {
        mMap = googleMap

        // Add a marker in Sydney and move the camera
        val sydney = LatLng(-34.0, 151.0)
        mMap.addMarker(MarkerOptions()
            .position(sydney)
            .title("Marker in Sydney"))
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney))
    }
}

      

モジュールの Gradle ファイル

モジュールの build.gradle ファイルには、Maps SDK for Android で必要とされる以下のマップの依存関係が含まれています。

dependencies {
    implementation 'com.google.android.gms:play-services-maps:18.1.0'
    // ...
}

マップの依存関係の管理については、バージョニングをご覧ください。

XML レイアウト ファイル

activity_maps.xml ファイルは、アプリの UI の構造を定義する XML レイアウト ファイルです。このファイルは res/layout ディレクトリにあります。activity_maps.xml ファイルは、以下の要素を含むフラグメントを宣言します。

  • tools:context は、フラグメントのデフォルト アクティビティを MapsActivity に設定します。このアクティビティは、マップ アクティビティ ファイルで定義されています。
  • android:name は、フラグメントのクラス名を SupportMapFragment に設定します。これは、マップ アクティビティ ファイルで使用されているフラグメントのタイプです。

XML レイアウト ファイルには、以下のコードが含まれています。

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/map"
    tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

アプリをデプロイして実行する

マーカーの配置されたオーストラリアのシドニーを中心とする地図のスクリーンショット。

アプリが正常に実行されると、次のスクリーンショットのように、オーストラリアのシドニーを中心とする地図が表示され、シドニーにマーカーが配置されます。

アプリをデプロイして実行するには:

  1. Android Studio で [Run] メニュー オプション(またはプレイボタンのアイコン)をクリックして、アプリを実行します。
  2. デバイスを選択するよう求めるプロンプトが表示されたら、以下のいずれかのオプションを選択します。
    • コンピュータに接続されている Android デバイスを選択します。
    • または、[Launch emulator] ラジオボタンをオンにして、以前に設定した仮想デバイスを選択します。
  3. [OK] をクリックします。Android Studio によって Gradle が起動され、アプリのビルドが完了すると、デバイスまたはエミュレータに結果が表示されます。アプリが起動するまで、数分かかることがあります。

次のステップ

  • 地図を設定する: このトピックでは、カメラの位置、地図のタイプ、UI コンポーネント、操作など、地図の初期設定およびランタイム設定を行う方法について説明します。

  • 地図を Android アプリに追加する(Kotlin): この Codelab では、Maps SDK for Android の主な機能のいくつかを実際にアプリで使用する方法について説明します。

  • Maps Android KTX ライブラリを使用する: この Kotlin 拡張機能(KTX)ライブラリを使用すると、Maps SDK for Android の使用中に Kotlin 言語機能の一部を利用できるようになります。