Skip to content

Commit b0bfd5a

Browse files
authored
Deprecate composable-map (#293)
* changes for authentication and compass app * update floorfilter micro app * deprecate composable map * update deprecated annotation * add deprecation annotation to public components * update template-app to use geo-compose module * remove unused import reformat code
1 parent 30ce4ef commit b0bfd5a

File tree

16 files changed

+137
-267
lines changed

16 files changed

+137
-267
lines changed

microapps/AuthenticationApp/app/build.gradle.kts

-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ android {
7676

7777
dependencies {
7878
implementation(project(":authentication"))
79-
implementation(project(":composable-map"))
8079
implementation(arcgis.mapsSdk)
8180
implementation(platform(libs.androidx.compose.bom))
8281
implementation(libs.bundles.composeCore)

microapps/CompassApp/app/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class).all {
7979

8080
dependencies {
8181
implementation(project(":compass"))
82-
implementation(project(":composable-map"))
82+
implementation(project(":geo-compose"))
8383
implementation(arcgis.mapsSdk)
8484
implementation(platform(libs.androidx.compose.bom))
8585
implementation(libs.bundles.composeCore)

microapps/CompassApp/app/src/main/java/com/arcgismaps/toolkit/compassapp/screens/MainScreen.kt

+32-20
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package com.arcgismaps.toolkit.compassapp.screens
2020

21+
import androidx.compose.foundation.layout.Box
2122
import androidx.compose.foundation.layout.IntrinsicSize
2223
import androidx.compose.foundation.layout.Row
2324
import androidx.compose.foundation.layout.fillMaxSize
@@ -26,40 +27,51 @@ import androidx.compose.foundation.layout.height
2627
import androidx.compose.foundation.layout.padding
2728
import androidx.compose.runtime.Composable
2829
import androidx.compose.runtime.getValue
30+
import androidx.compose.runtime.mutableDoubleStateOf
31+
import androidx.compose.runtime.mutableStateOf
32+
import androidx.compose.runtime.remember
33+
import androidx.compose.runtime.setValue
2934
import androidx.compose.ui.Modifier
3035
import androidx.compose.ui.unit.dp
31-
import androidx.lifecycle.viewmodel.compose.viewModel
3236
import com.arcgismaps.mapping.ArcGISMap
3337
import com.arcgismaps.mapping.BasemapStyle
3438
import com.arcgismaps.mapping.Viewpoint
3539
import com.arcgismaps.toolkit.compass.Compass
36-
import com.arcgismaps.toolkit.composablemap.ComposableMap
37-
import com.arcgismaps.toolkit.composablemap.DuplexFlow
40+
import com.arcgismaps.toolkit.geocompose.MapView
41+
import com.arcgismaps.toolkit.geocompose.MapViewpointOperation
3842

3943
@Composable
4044
fun MainScreen() {
4145
// create an ArcGISMap with a Topographic basemap style
42-
val map = ArcGISMap(BasemapStyle.ArcGISTopographic)
43-
// instantiate a MapViewModel using the factory
44-
val mapViewModel = viewModel<MapViewModel>(factory = MapViewModelFactory(map))
45-
// hoist the mapRotation state
46-
val mapRotation by mapViewModel.mapRotation.collectAsState(DuplexFlow.Type.Read)
47-
// show a composable map using the mapViewModel
48-
ComposableMap(
49-
modifier = Modifier.fillMaxSize(),
50-
mapInterface = mapViewModel
46+
val arcGISMap by remember { mutableStateOf(ArcGISMap(BasemapStyle.ArcGISTopographic)) }
47+
// set the composable map's viewpoint to North America
48+
var mapViewpointOperation: MapViewpointOperation? by remember {
49+
mutableStateOf(
50+
MapViewpointOperation.Set(Viewpoint(39.8, -98.6, 10e7))
51+
)
52+
}
53+
var mapRotation by remember { mutableDoubleStateOf(0.0) }
54+
// show composable MapView with compass
55+
Box(
56+
modifier = Modifier.fillMaxSize()
5157
) {
52-
Row(modifier = Modifier
53-
.height(IntrinsicSize.Max)
54-
.fillMaxWidth()
55-
.padding(25.dp)) {
58+
MapView(
59+
modifier = Modifier.fillMaxSize(),
60+
arcGISMap = arcGISMap,
61+
viewpointOperation = mapViewpointOperation,
62+
onMapRotationChanged = { rotation -> mapRotation = rotation }
63+
)
64+
Row(
65+
modifier = Modifier
66+
.height(IntrinsicSize.Max)
67+
.fillMaxWidth()
68+
.padding(25.dp)
69+
) {
5670
// show the compass and pass the mapRotation state data
5771
Compass(rotation = mapRotation) {
58-
// reset the ComposableMap viewpoint rotation to point north using the mapViewModel
59-
mapViewModel.setViewpointRotation(0.0)
72+
// reset the Composable MapView viewpoint rotation to point north
73+
mapViewpointOperation = MapViewpointOperation.Rotate(0.0)
6074
}
6175
}
6276
}
63-
// set the composable map's viewpoint to North America
64-
mapViewModel.setViewpoint(Viewpoint(39.8, -98.6, 10e7))
6577
}

microapps/CompassApp/app/src/main/java/com/arcgismaps/toolkit/compassapp/screens/MapViewModel.kt

-40
This file was deleted.

microapps/FloorFilterApp/app/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class).all {
6363

6464
dependencies {
6565
implementation(project(":indoors"))
66-
implementation(project(":composable-map"))
66+
implementation(project(":geo-compose"))
6767
implementation(arcgis.mapsSdk)
6868
implementation(platform(libs.androidx.compose.bom))
6969
implementation(libs.bundles.composeCore)

microapps/FloorFilterApp/app/src/main/java/com/arcgismaps/toolkit/floorfilterapp/screens/MainScreen.kt

+74-14
Original file line numberDiff line numberDiff line change
@@ -21,33 +21,93 @@ import androidx.compose.foundation.layout.Box
2121
import androidx.compose.foundation.layout.fillMaxSize
2222
import androidx.compose.foundation.layout.padding
2323
import androidx.compose.runtime.Composable
24+
import androidx.compose.runtime.getValue
25+
import androidx.compose.runtime.mutableStateOf
26+
import androidx.compose.runtime.remember
27+
import androidx.compose.runtime.rememberCoroutineScope
28+
import androidx.compose.runtime.setValue
2429
import androidx.compose.ui.Alignment
2530
import androidx.compose.ui.Modifier
2631
import androidx.compose.ui.unit.dp
27-
import androidx.lifecycle.viewmodel.compose.viewModel
32+
import com.arcgismaps.geometry.Envelope
33+
import com.arcgismaps.geometry.Geometry
2834
import com.arcgismaps.mapping.ArcGISMap
2935
import com.arcgismaps.mapping.PortalItem
36+
import com.arcgismaps.mapping.Viewpoint
3037
import com.arcgismaps.portal.Portal
31-
import com.arcgismaps.toolkit.composablemap.ComposableMap
38+
import com.arcgismaps.toolkit.geocompose.MapView
39+
import com.arcgismaps.toolkit.geocompose.MapViewpointOperation
3240
import com.arcgismaps.toolkit.indoors.FloorFilter
41+
import com.arcgismaps.toolkit.indoors.FloorFilterSelection
42+
import com.arcgismaps.toolkit.indoors.FloorFilterState
3343

3444
@Composable
3545
fun MainScreen() {
36-
val portal = Portal("https://arcgis.com/")
37-
val portalItem = PortalItem(portal, "b4b599a43a474d33946cf0df526426f5")
38-
val floorAwareWebMap = ArcGISMap(portalItem)
46+
val floorAwareWebMap by remember {
47+
mutableStateOf(
48+
ArcGISMap(
49+
PortalItem(
50+
Portal("https://arcgis.com/"),
51+
"b4b599a43a474d33946cf0df526426f5"
52+
)
53+
)
54+
)
55+
}
56+
57+
var mapViewpointOperation: MapViewpointOperation? by remember { mutableStateOf(null) }
58+
59+
val coroutineScope = rememberCoroutineScope()
60+
61+
// use default UI properties
62+
val floorFilterState: FloorFilterState by remember {
63+
mutableStateOf(FloorFilterState(
64+
geoModel = floorAwareWebMap,
65+
coroutineScope = coroutineScope
66+
) { floorFilterSelection ->
67+
when (floorFilterSelection.type) {
68+
is FloorFilterSelection.Type.FloorSite -> {
69+
val floorFilterSelectionType =
70+
floorFilterSelection.type as FloorFilterSelection.Type.FloorSite
71+
floorFilterSelectionType.site.geometry?.let {
72+
mapViewpointOperation =
73+
MapViewpointOperation.Set(Viewpoint(getEnvelopeWithBuffer(it)))
74+
}
75+
}
76+
77+
is FloorFilterSelection.Type.FloorFacility -> {
78+
val floorFilterSelectionType =
79+
floorFilterSelection.type as FloorFilterSelection.Type.FloorFacility
80+
floorFilterSelectionType.facility.geometry?.let {
81+
mapViewpointOperation =
82+
MapViewpointOperation.Set(Viewpoint(getEnvelopeWithBuffer(it)))
83+
}
84+
}
3985

40-
val mapViewModel = viewModel<MapViewModel>(factory = MapViewModelFactory(floorAwareWebMap))
86+
else -> {}
87+
}
88+
})
89+
}
4190

42-
ComposableMap(
91+
MapView(
4392
modifier = Modifier.fillMaxSize(),
44-
mapInterface = mapViewModel
93+
arcGISMap = floorAwareWebMap,
94+
viewpointOperation = mapViewpointOperation
95+
)
96+
Box(
97+
modifier = Modifier.fillMaxSize().padding(horizontal = 20.dp, vertical = 40.dp),
98+
contentAlignment = Alignment.BottomStart
4599
) {
46-
Box(
47-
modifier = Modifier.fillMaxSize().padding(horizontal = 20.dp, vertical = 40.dp),
48-
contentAlignment = Alignment.BottomStart
49-
) {
50-
FloorFilter(floorFilterState = mapViewModel.floorFilterState)
51-
}
100+
FloorFilter(floorFilterState = floorFilterState)
52101
}
53102
}
103+
104+
/**
105+
* Returns the envelope with an added buffer factor applied to the given Geometry's extent.
106+
*
107+
* @since 200.2.0
108+
*/
109+
private fun getEnvelopeWithBuffer(geometry: Geometry): Envelope {
110+
val bufferFactor = 1.25
111+
val envelope = geometry.extent
112+
return Envelope(envelope.center, envelope.width * bufferFactor, envelope.height * bufferFactor)
113+
}

microapps/FloorFilterApp/app/src/main/java/com/arcgismaps/toolkit/floorfilterapp/screens/MapViewModel.kt

-79
This file was deleted.

microapps/TemplateApp/app/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class).all {
8181

8282
dependencies {
8383
implementation(project(":template"))
84-
implementation(project(":composable-map"))
84+
implementation(project(":geo-compose"))
8585
implementation(arcgis.mapsSdk)
8686
implementation(platform(libs.androidx.compose.bom))
8787
implementation(libs.bundles.composeCore)

microapps/TemplateApp/app/src/main/java/com/arcgismaps/toolkit/templateapp/screens/MainScreen.kt

+14-18
Original file line numberDiff line numberDiff line change
@@ -20,32 +20,28 @@ package com.arcgismaps.toolkit.templateapp.screens
2020

2121
import androidx.compose.foundation.layout.fillMaxSize
2222
import androidx.compose.runtime.Composable
23+
import androidx.compose.runtime.getValue
24+
import androidx.compose.runtime.mutableStateOf
25+
import androidx.compose.runtime.remember
2326
import androidx.compose.ui.Modifier
24-
import androidx.lifecycle.viewmodel.compose.viewModel
2527
import com.arcgismaps.mapping.ArcGISMap
2628
import com.arcgismaps.mapping.BasemapStyle
2729
import com.arcgismaps.mapping.Viewpoint
28-
import com.arcgismaps.toolkit.composablemap.ComposableMap
29-
import com.arcgismaps.toolkit.template.Template
30+
import com.arcgismaps.toolkit.geocompose.MapView
31+
import com.arcgismaps.toolkit.geocompose.MapViewpointOperation
3032

3133
@Composable
3234
fun MainScreen() {
33-
val map = ArcGISMap(BasemapStyle.ArcGISTopographic)
34-
val mapViewModel = viewModel<MapViewModel>(factory = MapViewModelFactory(map))
35-
ComposableMap(
35+
val arcGISMap by remember { mutableStateOf(ArcGISMap(BasemapStyle.ArcGISTopographic)) }
36+
MapView(
3637
modifier = Modifier.fillMaxSize(),
37-
mapInterface = mapViewModel
38-
)
39-
40-
val templateViewModel = viewModel<TemplateViewModel>(
41-
factory = TemplateViewModelFactory("Hello Template!!")
42-
)
43-
Template(templateViewModel)
44-
mapViewModel.setViewpoint(
45-
viewpoint = Viewpoint(
46-
latitude = 39.8,
47-
longitude = -98.6,
48-
scale = 10e7
38+
arcGISMap = arcGISMap,
39+
viewpointOperation = MapViewpointOperation.Set(
40+
Viewpoint(
41+
latitude = 39.8,
42+
longitude = -98.6,
43+
scale = 10e7
44+
)
4945
)
5046
)
5147
}

0 commit comments

Comments
 (0)