From 04fd485cf93374bba18e2332a75897f77d1d1e98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Ahlers?= Date: Thu, 20 Nov 2025 09:32:22 +0100 Subject: [PATCH] Pass `Application` context to `MapPage` and `ContentScreen`, create `MapViewModel` for ArcGISMap management, and refactor `MapPage` to display an interactive map. --- .../strassenschadenpro2/MainActivity.kt | 3 ++- .../jadehs/strassenschadenpro2/MainScreen.kt | 9 ++++---- .../strassenschadenpro2/MapViewModel.kt | 13 ++++++++++++ .../strassenschadenpro2/pages/MapPage.kt | 21 +++++++++++++++++-- 4 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/de/jadehs/strassenschadenpro2/MapViewModel.kt diff --git a/app/src/main/java/de/jadehs/strassenschadenpro2/MainActivity.kt b/app/src/main/java/de/jadehs/strassenschadenpro2/MainActivity.kt index ccfe148..f2cdebb 100644 --- a/app/src/main/java/de/jadehs/strassenschadenpro2/MainActivity.kt +++ b/app/src/main/java/de/jadehs/strassenschadenpro2/MainActivity.kt @@ -34,9 +34,10 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() + setContent { StrassenSchadenPro2Theme { - MainScreen() + MainScreen(application=application) } } } diff --git a/app/src/main/java/de/jadehs/strassenschadenpro2/MainScreen.kt b/app/src/main/java/de/jadehs/strassenschadenpro2/MainScreen.kt index 84e5ad2..c8dd9e4 100644 --- a/app/src/main/java/de/jadehs/strassenschadenpro2/MainScreen.kt +++ b/app/src/main/java/de/jadehs/strassenschadenpro2/MainScreen.kt @@ -1,5 +1,6 @@ package de.jadehs.strassenschadenpro2 +import android.app.Application import android.util.Log import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding @@ -25,7 +26,7 @@ import de.jadehs.strassenschadenpro2.pages.MapPage import de.jadehs.strassenschadenpro2.pages.SettingsPage @Composable -fun MainScreen(modifier: Modifier = Modifier) { +fun MainScreen(modifier: Modifier = Modifier, application: Application) { val navItemList = listOf( NavItem("Karte",Icons.Default.Place), @@ -52,15 +53,15 @@ fun MainScreen(modifier: Modifier = Modifier) { } }) { innerPadding -> - ContentScreen(modifier = Modifier.padding(innerPadding), selectedIndex) + ContentScreen(modifier = Modifier.padding(innerPadding), selectedIndex, application) } } @Composable -fun ContentScreen(modifier: Modifier = Modifier, selectedIndex: Int) { +fun ContentScreen(modifier: Modifier = Modifier, selectedIndex: Int, application: Application) { when(selectedIndex) { - 0 -> MapPage() + 0 -> MapPage(application=application) 1 -> CreatePage() 2 -> ListPage() 3 -> SettingsPage() diff --git a/app/src/main/java/de/jadehs/strassenschadenpro2/MapViewModel.kt b/app/src/main/java/de/jadehs/strassenschadenpro2/MapViewModel.kt new file mode 100644 index 0000000..f119fea --- /dev/null +++ b/app/src/main/java/de/jadehs/strassenschadenpro2/MapViewModel.kt @@ -0,0 +1,13 @@ +package de.jadehs.strassenschadenpro2 + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import com.arcgismaps.mapping.ArcGISMap +import com.arcgismaps.mapping.BasemapStyle +import com.arcgismaps.toolkit.geoviewcompose.MapViewProxy + +class MapViewModel(application: Application): AndroidViewModel(application) { + val map: ArcGISMap = ArcGISMap(BasemapStyle.OpenOsmStyle) + + val mapViewProxy = MapViewProxy() +} \ No newline at end of file diff --git a/app/src/main/java/de/jadehs/strassenschadenpro2/pages/MapPage.kt b/app/src/main/java/de/jadehs/strassenschadenpro2/pages/MapPage.kt index 93f3ffc..88efb89 100644 --- a/app/src/main/java/de/jadehs/strassenschadenpro2/pages/MapPage.kt +++ b/app/src/main/java/de/jadehs/strassenschadenpro2/pages/MapPage.kt @@ -1,10 +1,27 @@ package de.jadehs.strassenschadenpro2.pages +import android.app.Application +import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import com.arcgismaps.ApiKey +import com.arcgismaps.ArcGISEnvironment +import com.arcgismaps.mapping.ArcGISMap +import com.arcgismaps.mapping.BasemapStyle +import com.arcgismaps.mapping.Viewpoint +import com.arcgismaps.toolkit.geoviewcompose.MapView +import de.jadehs.strassenschadenpro2.BuildConfig +import de.jadehs.strassenschadenpro2.MapViewModel @Composable -fun MapPage(modifier: Modifier = Modifier) { - Text("Karte") +fun MapPage(modifier: Modifier = Modifier, application: Application) { + ArcGISEnvironment.apiKey = ApiKey.create(BuildConfig.ARCGIS_TOKEN) + + val mapViewModel = remember { MapViewModel(application) } + + MapView(modifier = Modifier.fillMaxSize(), + arcGISMap = mapViewModel.map + ) } \ No newline at end of file