android-maps-compose
Guide for integrating the android-maps-compose library into an Android application. Use when users ask to add Google Maps Compose to their Android app or set up Maps in Compose.
Source facts
- Repository
- googlemaps/android-maps-compose
- Last source activity
- October 8, 2026 at 18:10
- Detected SKILL.md language
- English
- Stars
- 1,317
- Forks
- 183
Install options
The review-first prompt is selected by default. You can switch to a direct command or download a local copy.
Review the source files
Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.
Showing SKILL.md
SKILL.md
Source instructions · Read-only preview- name
- android-maps-compose
- description
- Guide for integrating the android-maps-compose library into an Android application. Use when users ask to add Google Maps Compose to their Android app or set up Maps in Compose.
# Android Maps Compose Integration
You are an expert Android developer specializing in Jetpack Compose and modern Android architecture. Follow these instructions carefully to integrate the `android-maps-compose` library into the user's Android application.
## 1. Setup Dependencies
First, add the necessary dependencies to the app-level `build.gradle.kts` file.
Verify the latest versions if possible, but use these as a baseline:
```kotlin
dependencies {
// Google Maps Compose library
implementation("com.google.maps.android:maps-compose:9.0.1") // x-release-please-version
// Optional: Maps Compose Utilities (for clustering, etc.)
// implementation("com.google.maps.android:maps-compose-utils:9.0.1") // x-release-please-version
// Optional: Maps Compose Widgets (for UI components)
// implementation("com.google.maps.android:maps-compose-widgets:9.0.1") // x-release-please-version
}
```
## 2. Setup the Secrets Gradle Plugin
Instead of hardcoding the Google Maps API key in `AndroidManifest.xml`, use the Secrets Gradle Plugin for Android to inject the API key securely.
First, add the plugin to the project-level `build.gradle.kts`:
```kotlin
buildscript {
dependencies {
classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1")
}
}
```
Then, apply the plugin in the app-level `build.gradle.kts`:
```kotlin
plugins {
// ...
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin")
}
```
Add the API Key to `local.properties`:
```properties
MAPS_API_KEY=YOUR_API_KEY
```
In `AndroidManifest.xml`, add the required permissions and reference the injected API key meta-data:
```xml
<manifest ...>
<!-- Required for Google Maps -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application ...>
<!-- Google Maps API Key injected by Secrets Gradle Plugin -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="${MAPS_API_KEY}" />
...
</application>
</manifest>
```
## 3. Implement the Map Composable
Create a new file named `MapScreen.kt` (or similar, depending on the app's architecture) and add a basic Jetpack Compose map implementation.
Use `CameraPositionState` to control the camera and `Marker` to display points of interest.
```kotlin
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import com.google.android.gms.maps.model.CameraPosition
import com.google.android.gms.maps.model.LatLng
import com.google.maps.android.compose.GoogleMap
import com.google.maps.android.compose.Marker
import com.google.maps.android.compose.MarkerState
import com.google.maps.android.compose.rememberCameraPositionState
@Composable
fun MapScreen() {
// Default location (e.g., Singapore)
val defaultLocation = LatLng(1.35, 103.87)
val cameraPositionState = rememberCameraPositionState {
position = CameraPosition.fromLatLngZoom(defaultLocation, 10f)
}
GoogleMap(
modifier = Modifier.fillMaxSize(),
cameraPositionState = cameraPositionState
) {
Marker(
state = MarkerState(position = defaultLocation),
title = "Singapore",
snippet = "Marker in Singapore"
)
}
}
```
## 4. Best Practices & Guidelines
* **State Management:** Hoist state (like camera position and marker lists) to the ViewModel if the map is dynamic.
* **Performance:** For large numbers of markers, use the `Clustering` composable from the `maps-compose-utils` artifact instead of rendering thousands of individual `Marker` composables.
* **Lifecycle:** `GoogleMap` handles its own lifecycle under the hood in Compose, so you generally don't need to manually manage `MapView` lifecycle events unless doing custom integrations.
## 5. Execution Steps
1. Create a new branch `feature/maps-compose-integration`.
2. Add the Maps Compose dependencies to the app-level `build.gradle.kts`.
3. Set up the Secrets Gradle Plugin in both project-level and app-level `build.gradle.kts`.
4. Update `AndroidManifest.xml` with permissions and the `${MAPS_API_KEY}` placeholder.
5. Create the `MapScreen.kt` composable.
6. Provide a summary of the changes and instruct the user on how to add their API key to `local.properties`.
View on GitHub