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