Skip to content

Commit ee146df

Browse files
authored
Add InlineMap implementation for F-Droid build (#4877)
1 parent d5d4aa4 commit ee146df

1 file changed

Lines changed: 39 additions & 1 deletion

File tree

  • app/src/fdroid/kotlin/org/meshtastic/app/node/component

app/src/fdroid/kotlin/org/meshtastic/app/node/component/InlineMap.kt

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,49 @@
1616
*/
1717
package org.meshtastic.app.node.component
1818

19+
import android.view.ViewGroup
1920
import androidx.compose.runtime.Composable
21+
import androidx.compose.runtime.LaunchedEffect
22+
import androidx.compose.runtime.remember
2023
import androidx.compose.ui.Modifier
24+
import androidx.compose.ui.viewinterop.AndroidView
2125
import org.meshtastic.core.model.Node
26+
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
27+
import org.osmdroid.util.GeoPoint
28+
import org.osmdroid.views.MapView
29+
import org.osmdroid.views.overlay.Marker
2230

2331
@Composable
2432
fun InlineMap(node: Node, modifier: Modifier = Modifier) {
25-
// No-op for F-Droid builds
33+
val context = androidx.compose.ui.platform.LocalContext.current
34+
35+
val map = remember {
36+
MapView(context).apply {
37+
layoutParams =
38+
ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
39+
40+
// Default osmdroid tile source.
41+
setTileSource(TileSourceFactory.MAPNIK)
42+
setMultiTouchControls(false)
43+
44+
controller.setZoom(15.0)
45+
}
46+
}
47+
48+
LaunchedEffect(node.num) {
49+
val point = GeoPoint(node.latitude, node.longitude)
50+
51+
map.overlays.clear()
52+
53+
val marker =
54+
Marker(map).apply {
55+
position = point
56+
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
57+
}
58+
map.overlays.add(marker)
59+
60+
map.controller.animateTo(point)
61+
}
62+
63+
AndroidView(factory = { map }, modifier = modifier)
2664
}

0 commit comments

Comments
 (0)