← ClaudeAtlas

android-maps-location-uilisted

Android maps and location UI patterns - map screens, markers, camera state, location permission integration, geospatial UI state, and user-friendly place interactions. Use this skill whenever building map-based screens, showing nearby results, controlling map camera state, or combining location permissions with spatial UI. Trigger on phrases like "map", "marker", "camera position", "nearby places", "location UI", "geospatial", or "map screen".
lenorebreakneck630/claude-zero-to-hero-android-KMP · ★ 1 · Web & Frontend · score 64
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