Pass Application context to MapPage and ContentScreen, create MapViewModel for ArcGISMap management, and refactor MapPage to display an interactive map.

This commit is contained in:
2025-11-20 09:32:22 +01:00
parent c05ea2878e
commit 04fd485cf9
4 changed files with 39 additions and 7 deletions

View File

@@ -34,9 +34,10 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
enableEdgeToEdge() enableEdgeToEdge()
setContent { setContent {
StrassenSchadenPro2Theme { StrassenSchadenPro2Theme {
MainScreen() MainScreen(application=application)
} }
} }
} }

View File

@@ -1,5 +1,6 @@
package de.jadehs.strassenschadenpro2 package de.jadehs.strassenschadenpro2
import android.app.Application
import android.util.Log import android.util.Log
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -25,7 +26,7 @@ import de.jadehs.strassenschadenpro2.pages.MapPage
import de.jadehs.strassenschadenpro2.pages.SettingsPage import de.jadehs.strassenschadenpro2.pages.SettingsPage
@Composable @Composable
fun MainScreen(modifier: Modifier = Modifier) { fun MainScreen(modifier: Modifier = Modifier, application: Application) {
val navItemList = listOf( val navItemList = listOf(
NavItem("Karte",Icons.Default.Place), NavItem("Karte",Icons.Default.Place),
@@ -52,15 +53,15 @@ fun MainScreen(modifier: Modifier = Modifier) {
} }
}) { }) {
innerPadding -> innerPadding ->
ContentScreen(modifier = Modifier.padding(innerPadding), selectedIndex) ContentScreen(modifier = Modifier.padding(innerPadding), selectedIndex, application)
} }
} }
@Composable @Composable
fun ContentScreen(modifier: Modifier = Modifier, selectedIndex: Int) { fun ContentScreen(modifier: Modifier = Modifier, selectedIndex: Int, application: Application) {
when(selectedIndex) { when(selectedIndex) {
0 -> MapPage() 0 -> MapPage(application=application)
1 -> CreatePage() 1 -> CreatePage()
2 -> ListPage() 2 -> ListPage()
3 -> SettingsPage() 3 -> SettingsPage()

View File

@@ -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()
}

View File

@@ -1,10 +1,27 @@
package de.jadehs.strassenschadenpro2.pages package de.jadehs.strassenschadenpro2.pages
import android.app.Application
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier 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 @Composable
fun MapPage(modifier: Modifier = Modifier) { fun MapPage(modifier: Modifier = Modifier, application: Application) {
Text("Karte") ArcGISEnvironment.apiKey = ApiKey.create(BuildConfig.ARCGIS_TOKEN)
val mapViewModel = remember { MapViewModel(application) }
MapView(modifier = Modifier.fillMaxSize(),
arcGISMap = mapViewModel.map
)
} }