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:
@@ -34,9 +34,10 @@ class MainActivity : ComponentActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
enableEdgeToEdge()
|
||||
|
||||
setContent {
|
||||
StrassenSchadenPro2Theme {
|
||||
MainScreen()
|
||||
MainScreen(application=application)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user