ドキュメント / セットアップ / 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 分
前提
Android 開発環境(Android Studio)
Google Cloud Console のアカウント
Google Cloud プロジェクトで Maps SDK for Android が有効になっていること
STEP 01
API キーを取得する
- Google Cloud Console にアクセスします。
- プロジェクトを新規作成するか、既存のものを選びます。
- Maps SDK for Android を有効にします。
- 「認証情報」から API キーを作成します。
- キーをアプリのパッケージ名と 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 で書けます。プロバイダを差し替えても、その部分のコードは変わりません。