@@ -16,65 +16,53 @@ import ArcGIS
1616import SwiftUI
1717
1818struct DownloadPreplannedMapAreaView : View {
19+ /// A Boolean value indicating whether to select a map.
20+ @State private var isShowingSelectMapView = false
21+
1922 /// A Boolean value indicating whether to show delete alert.
2023 @State private var isShowingDeleteAlert = false
2124
2225 /// The view model for this sample.
2326 @StateObject private var model = Model ( )
2427
2528 var body : some View {
26- MapViewReader { mapViewProxy in
27- MapView ( map: model. currentMap)
28- . onVisibleAreaChanged { visibleArea in
29- guard model. offlineMapDidChange else { return }
30- model. offlineMapDidChange = false
29+ MapView ( map: model. currentMap)
30+ . overlay ( alignment: . top) {
31+ mapNameOverlay
32+ }
33+ . toolbar {
34+ ToolbarItemGroup ( placement: . bottomBar) {
35+ Spacer ( )
3136
32- let builder = EnvelopeBuilder ( envelope: visibleArea. extent)
33- builder. expand ( by: 0.5 )
34- let zoomEnvelope = builder. toGeometry ( )
37+ Button ( " Select Map " ) {
38+ isShowingSelectMapView. toggle ( )
39+ }
40+ . sheet ( isPresented: $isShowingSelectMapView, detents: [ . medium] ) {
41+ MapPicker ( )
42+ . environmentObject ( model)
43+ }
3544
36- Task {
37- // Zooms offline map in to view all layer content.
38- await mapViewProxy. setViewpointGeometry ( zoomEnvelope)
45+ Spacer ( )
46+
47+ Button {
48+ isShowingDeleteAlert = true
49+ } label: {
50+ Image ( systemName: " trash " )
3951 }
40- }
41- . overlay ( alignment: . top) {
42- mapNameOverlay
43- }
44- . toolbar {
45- ToolbarItemGroup ( placement: . bottomBar) {
46- Spacer ( )
47-
48- Button ( " Select Map " ) {
49- model. isShowingSelectMapView = true
50- }
51- . sheet ( isPresented: $model. isShowingSelectMapView, detents: [ . medium] ) {
52- MapPicker ( )
53- . environmentObject ( model)
54- }
55-
56- Spacer ( )
57-
58- Button {
59- isShowingDeleteAlert = true
60- } label: {
61- Image ( systemName: " trash " )
62- }
63- . disabled ( !model. canRemoveDownloadedMaps)
64- . alert ( " Delete All Offline Areas " , isPresented: $isShowingDeleteAlert) {
65- Button ( " Delete " , role: . destructive) {
66- model. removeDownloadedMaps ( )
67- }
68- } message: {
69- Text ( " Are you sure you want to delete all downloaded preplanned map areas? " )
52+ . disabled ( !model. canRemoveDownloadedMaps)
53+ . alert ( " Delete All Offline Areas " , isPresented: $isShowingDeleteAlert) {
54+ Button ( " Delete " , role: . destructive) {
55+ model. removeDownloadedMaps ( )
7056 }
57+ } message: {
58+ Text ( " Are you sure you want to delete all downloaded preplanned map areas? " )
7159 }
7260 }
73- . task {
74- // Makes the offline map models when the view is first shown.
75- await model . makeOfflineMapModels ( )
76- }
77- }
61+ }
62+ . task {
63+ // Makes the offline map models when the view is first shown.
64+ await model . makeOfflineMapModels ( )
65+ }
7866 }
7967
8068 var mapNameOverlay : some View {
0 commit comments