android-maps-location-uilisted
Install: claude install-skill lenorebreakneck630/claude-zero-to-hero-android-KMP
# Android Maps and Location UI
## Core Principles
- Map UI should support a clear user task, not exist as decoration.
- The `ViewModel` owns location-driven screen state; the map renders it.
- Permission, location availability, and empty results are first-class UI states.
- Camera movement and marker interactions should feel intentional.
- Spatial screens should degrade gracefully when location is unavailable.
---
## Typical Use Cases
Good map use cases:
- nearby search
- delivery/trip progress
- pick a place on a map
- view clustered locations
- inspect one location in context
Bad map use cases:
- showing a map when a simple list would do
- loading too many points without clustering or filtering
- making location permission mandatory before any value is shown
---
## Screen State
Represent map state explicitly:
```kotlin
data class NearbyMapState(
val markers: List<PlaceUi> = emptyList(),
val selectedPlaceId: String? = null,
val isLocationGranted: Boolean = false,
val isLocationEnabled: Boolean = false,
val isLoading: Boolean = false,
val error: UiText? = null
)
```
The screen should render from one state object rather than scattered booleans.
---
## Camera Ownership
Decide which camera changes are app-driven vs user-driven.
Common good patterns:
- initial camera from last known or default region
- animate to selected marker
- animate to user location only after explicit user intent or first meaningful entry
Bad patterns:
- constantly f