#6304 migrated the google-flavor custom map overlays (KML/KMZ/GeoJSON "Map Layers") onto the new android-maps-utils 5.0 platform-agnostic data layer. During that migration we found three upstream bugs and worked around all of them app-side. This issue tracks the upstream fixes and the cleanup we should do here when they land.
Upstream tracking
When a fixed release ships
The fixes arrive transitively: android-maps-utils → maps-utils-ktx → maps-compose (Renovate will surface the bump).
Code region: androidApp/src/google/kotlin/org/meshtastic/app/map/MapView.kt ("Map Layers"). Context and root-cause analysis: #6304.
🤖 Generated with Claude Code
#6304 migrated the google-flavor custom map overlays (KML/KMZ/GeoJSON "Map Layers") onto the new android-maps-utils 5.0 platform-agnostic data layer. During that migration we found three upstream bugs and worked around all of them app-side. This issue tracks the upstream fixes and the cleanup we should do here when they land.
Upstream tracking
MapViewRenderer.removeFeature()no-op for MultiGeometry (objects stranded on map, duplicated on re-add)RenderedMapLayercreates a single-use renderer per show and tears down withclear()only — neverremoveFeature/removeLayerGeoJsonMapperstyles MultiPolygon as a line, dropping simplestyle fillapplySimpleStyleSpecinMapView.ktrebuilds all polygon/line styles from properties, including its own polygon-vs-line geometry detectionGeoJsonLayer/KmlLayerbridgesWhen a fixed release ships
The fixes arrive transitively: android-maps-utils → maps-utils-ktx → maps-compose (Renovate will surface the bump).
RenderedMapLayer's single-use-renderer pattern ([Bug]: Can't access Range Test to turn it off when connected with TCP #1722 fixed):removeLayer()becomes trustworthy. Noteclear()still permanently cancels the renderer's icon-loading scope, so renderer-per-show may remain the right call for re-shows — decide with fresh eyes.applySimpleStyleSpec(chore(deps): update androidx.datastore:datastore to v1.1.4 #1724 fixed): drop our polygon-vs-line MultiGeometry detection and lean on the upstream mapper's styles. Keep the app-specific extras upstream doesn't cover: legacycolorfallback,rgb()/rgba()parsing, and theDEFAULT_GEOJSON_FILL_OPACITY(0.35) default that makes stacked Site Planner contour bands read as a gradient.Code region:
androidApp/src/google/kotlin/org/meshtastic/app/map/MapView.kt("Map Layers"). Context and root-cause analysis: #6304.🤖 Generated with Claude Code