MapControlsOverlay

fun MapControlsOverlay(modifier: Modifier = Modifier, onToggleFilterMenu: () -> Unit? = null, bearing: Float = 0.0f, onCompassClick: () -> Unit = {}, followPhoneBearing: Boolean = false, filterDropdownContent: @Composable () -> Unit = {}, filtersActive: Boolean = false, mapTypeContent: @Composable () -> Unit = {}, layersContent: @Composable () -> Unit = {}, onSitePlannerClick: () -> Unit? = null, isLocationTrackingEnabled: Boolean = false, onToggleLocationTracking: () -> Unit? = null, showRefresh: Boolean = false, isRefreshing: Boolean = false, onRefresh: () -> Unit = {})(source)

Shared map controls overlay using HorizontalFloatingToolbar for Material 3 Expressive styling. Provides compass, filter button, location tracking button, and optional slots for flavor-specific content (map type selector, layers, refresh).

Zoom is deliberately not here — it lives in MapZoomControls, in the lower corner where Google Maps draws its own.

Parameters

onToggleFilterMenu

Callback to open/close the filter dropdown.

filterDropdownContent

Composable rendered inside a Box alongside the filter button — MapFilterSheet on the main map, a dropdown on the node-track map.

filtersActive

Whether any filter is narrowing what the map shows. Badges the button, because a filter that hides nodes is otherwise indistinguishable from a quiet mesh.

mapTypeContent

Optional composable for a map type selector button + dropdown. Google flavor provides map type and custom tile options; F-Droid provides a tile source selector.

layersContent

Optional composable for a layers management button.

showRefresh

Whether to show a refresh button (e.g., for network map layers).

isRefreshing

Whether a refresh is currently in progress.

onRefresh

Callback when the refresh button is clicked.