Add InlineMap implementation for F-Droid build (#4877)

This commit is contained in:
Dmitry 2026-03-22 18:55:58 +03:00 committed by GitHub
parent d5d4aa4577
commit ee146df334
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -16,11 +16,49 @@
*/
package org.meshtastic.app.node.component
import android.view.ViewGroup
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.viewinterop.AndroidView
import org.meshtastic.core.model.Node
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
import org.osmdroid.util.GeoPoint
import org.osmdroid.views.MapView
import org.osmdroid.views.overlay.Marker
@Composable
fun InlineMap(node: Node, modifier: Modifier = Modifier) {
// No-op for F-Droid builds
val context = androidx.compose.ui.platform.LocalContext.current
val map = remember {
MapView(context).apply {
layoutParams =
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
// Default osmdroid tile source.
setTileSource(TileSourceFactory.MAPNIK)
setMultiTouchControls(false)
controller.setZoom(15.0)
}
}
LaunchedEffect(node.num) {
val point = GeoPoint(node.latitude, node.longitude)
map.overlays.clear()
val marker =
Marker(map).apply {
position = point
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
}
map.overlays.add(marker)
map.controller.animateTo(point)
}
AndroidView(factory = { map }, modifier = modifier)
}