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

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

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

開発環境を設定する

  1. Android Studio は必ず使用する必要があります。お持ちでない場合は、ダウンロードしてインストールしてください。

  2. Android Studio に Google Play 開発者サービス SDK を追加します。Maps SDK for Android は、Google Play 開発者サービス SDK の一部として配布されています。追加するには、SDK Manager を使用します。

Android デバイスを設定する

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

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] には、テストするデバイスでサポートされている Android SDK のバージョンを設定します。

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

Android Studio が Gradle を起動し、プロジェクトがビルドされます。この処理には、しばらく時間がかかることがあります。ビルドが完了すると、Android Studio によって google_maps_api.xml ファイルと MapsActivity ファイルが開きます。アクティビティの名前が異なる場合がありますが、これはセットアップ時に設定した名前になります。

プロジェクトの作成について詳しくは、Android プロジェクトを作成するをご覧ください。

google_maps_api.xml ファイルには Google Maps API キーを取得してファイルに追加する手順が記載されていますが、この方法でファイルに API キーを追加すると、API キーを安全に保存できなくなります。API キーは、次のセクションで説明する手順に沿って追加してください。

Cloud Console で設定する

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

ステップ 1

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

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

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

    Google Cloud の無料トライアル(300 ドル分)と Google Maps Platform の無料クレジット(毎月 200 ドル分)が付与されます。詳しくは、請求先アカウントのクレジットおよび Google Maps Platform の料金をご覧ください。

ステップ 2

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

Maps SDK for Android を有効化

ステップ 3

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

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

API キーを作成するには:

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

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

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

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

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

このタスクを効率化するには、Android 用 Secrets Gradle プラグインを使用します。

プラグインをインストールして API キーを保存するには:

  1. Android Studio でルートレベルの build.gradle ファイルを開き、buildscript の配下にある dependencies 要素に次のコードを追加します。
    buildscript {
        dependencies {
            // ...
            classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:1.3.0"
        }
    }
        
  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. ファイルを保存して、プロジェクトを Gradle と同期します。
  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

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.maps.example;

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;

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

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.maps.example.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
import com.google.maps.example.R

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:17.0.1'
    // ...
}

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

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 の主な機能のいくつかを実際にアプリで使用する方法について説明します。