ドキュメント / セットアップ / Android / Google Maps

Google Maps セットアップ

Google Maps SDK for Android を MapConductor から使う手順です。API キーの取得から、Secrets Gradle Plugin でキーを注入し、GoogleMapView が表示されるところまでを扱います。

MODULE
com.mapconductor:for-googlemaps
API KEY
必要
VIEW
GoogleMapView
TIME
15 分
ほかのプラットフォームiOSReact

前提

Android 開発環境(Android Studio)
Google Cloud Console のアカウント
Google Cloud プロジェクトで Maps SDK for Android が有効になっていること
STEP 01

API キーを取得する

  1. Google Cloud Console にアクセスします。
  2. プロジェクトを新規作成するか、既存のものを選びます。
  3. Maps SDK for Android を有効にします。
  4. 「認証情報」から API キーを作成します。
  5. キーをアプリのパッケージ名と SHA-1 証明書フィンガープリントに制限します。
デバッグビルドとリリースビルドでは署名証明書が違うため、SHA-1 も別々に登録する必要があります。
STEP 02

Secrets Gradle Plugin を入れる

キーをソース管理に置かないための仕組みです。プラグインが secrets.properties を読み、ビルド時に AndroidManifest.xml のプレースホルダーへ値を差し込みます。

(root)/build.gradle.ktsKotlin
plugins {
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
}
STEP 03

依存関係を追加する

Google Maps SDK 本体と MapConductor のモジュールをアプリに追加し、Secrets Gradle Plugin を適用します。MapConductor のバージョンは BOM が一括で決めます。

app/build.gradle.ktsKotlin
plugins {
    // ... other plugins
    id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}

dependencies {
    // Google Maps SDK
    implementation("com.google.android.gms:play-services-maps:20.0.0")

    // MapConductor BOM pins every module below
    implementation(platform("com.mapconductor:mapconductor-bom:1.2.0"))

    implementation("com.mapconductor:core")
    implementation("com.mapconductor:for-googlemaps")
    // Optional: compose / icons / heatmap / marker-clustering / geojson / kml
}
STEP 04

マニフェストとキーを設定する

マニフェストにはプレースホルダーだけを書き、実際の値は secrets.properties に置きます。ビルド時にプラグインが置き換えます。

AndroidManifest.xmlXML
<manifest>
    <!-- Add location permissions -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application>
        <!-- Google Maps API Key -->
        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="${GOOGLE_MAPS_API_KEY}" />
    </application>
</manifest>
secrets.propertiesProperties
GOOGLE_MAPS_API_KEY=your_actual_api_key
位置情報を使わないアプリでは ACCESS_*_LOCATION は不要です。タイルの取得には INTERNET だけが必要です。
注意
secrets.properties はバージョン管理にコミットしないでください。.gitignore に追加しておくと事故を防げます。CI では環境変数など別の安全な経路で渡します。
STEP 05

ProGuard / R8 を設定する(該当する場合)

難読化を有効にしている場合は、Play Services Maps のクラスを残します。

proguard-rules.proProGuard
# Google Play Services
-keep class com.google.android.gms.maps.** { *; }
-keep interface com.google.android.gms.maps.** { *; }
-dontwarn com.google.android.gms.**

動作確認

ここまで動けば完了

この画面をビルドして実行し、地図が出てズームとパンが効けばセットアップは完了です。

TestGoogleMaps.ktJetpack Compose
@Composable
fun TestGoogleMaps(modifier: Modifier = Modifier) {
    val mapState = rememberGoogleMapViewState(
        cameraPosition = MapCameraPosition(
            position = GeoPoint(35.6762, 139.6503),
            zoom = 12.0,
        ),
    )

    // If the map appears, the setup is correct.
    GoogleMapView(modifier = modifier, state = mapState)
}

地図デザイン

GoogleMapDesign は Google のマップタイプをそのまま写したものです。

GoogleMapDesign
Notes
Normal
通常の道路地図(roadmap)
Satellite
衛星画像
Hybrid
衛星画像+道路とラベル
Terrain
地形図
None
ベースマップなし

うまくいかないとき

地図が出ない(グレーの画面)

  • secrets.properties の API キーが正しいか確認します。
  • Google Cloud Console で Maps SDK for Android が有効か確認します。
  • キーの制限が、実際のパッケージ名と SHA-1 に一致しているか確認します。

ログに API キーエラーが出る

  • キーの値と有効期限を確認します。
  • Console 側の制限設定を見直します。

ビルドが通らない

  • 地図 SDK の座標とバージョンがバージョンカタログの指定と一致しているか確認します。
  • リポジトリ定義が settings.gradle.kts にあるか確認します(repositoriesMode が FAIL_ON_PROJECT_REPOS だと、モジュール側の repositories は無視されます)。
  • 複数の地図 SDK を同時に入れている場合は、依存の衝突がないか ./gradlew :app:dependencies で確認します。

次に

GoogleMapView が出たら、Marker・Polyline・Circle などのオーバーレイは共通 API で書けます。プロバイダを差し替えても、その部分のコードは変わりません。