@@ -26,43 +26,46 @@ struct DownloadPreplannedMapAreaView: View {
2626 @StateObject private var model = Model ( )
2727
2828 var body : some View {
29- MapView ( map : model . currentMap )
30- . overlay ( alignment : . top ) {
31- mapNameOverlay
32- }
33- . toolbar {
34- ToolbarItemGroup ( placement : . bottomBar ) {
35- Spacer ( )
36-
37- Button ( " Select Map " ) {
38- isShowingSelectMapView . toggle ( )
39- }
40- . sheet ( isPresented : $isShowingSelectMapView , detents : [ . medium ] ) {
41- MapPicker ( )
42- . environmentObject ( model )
43- }
44-
45- Spacer ( )
46-
47- Button {
48- isShowingDeleteAlert = true
49- } label : {
50- Image ( systemName : " trash " )
51- }
52- . disabled ( !model . canRemoveDownloadedMaps )
53- . alert ( " Delete All Offline Areas " , isPresented : $isShowingDeleteAlert ) {
54- Button ( " Delete " , role : . destructive ) {
55- model . removeDownloadedMaps ( )
56- }
57- } message : {
58- Text ( " Are you sure you want to delete all downloaded preplanned map areas? " )
29+ MapView (
30+ map : model . currentMap ,
31+ viewpoint : model . currentMap . initialViewpoint ? . zoomedIn ( )
32+ )
33+ . overlay ( alignment : . top ) {
34+ mapNameOverlay
35+ }
36+ . toolbar {
37+ ToolbarItemGroup ( placement : . bottomBar ) {
38+ Spacer ( )
39+
40+ Button ( " Select Map " ) {
41+ isShowingSelectMapView . toggle ( )
42+ }
43+ . sheet ( isPresented : $isShowingSelectMapView , detents : [ . medium ] ) {
44+ MapPicker ( )
45+ . environmentObject ( model )
46+ }
47+
48+ Spacer ( )
49+
50+ Button {
51+ isShowingDeleteAlert = true
52+ } label : {
53+ Image ( systemName : " trash " )
54+ }
55+ . disabled ( !model . canRemoveDownloadedMaps )
56+ . alert ( " Delete All Offline Areas " , isPresented : $isShowingDeleteAlert ) {
57+ Button ( " Delete " , role : . destructive ) {
58+ model . removeDownloadedMaps ( )
5959 }
60+ } message: {
61+ Text ( " Are you sure you want to delete all downloaded preplanned map areas? " )
6062 }
6163 }
62- . task {
63- // Makes the offline map models when the view is first shown.
64- await model. makeOfflineMapModels ( )
65- }
64+ }
65+ . task {
66+ // Makes the offline map models when the view is first shown.
67+ await model. makeOfflineMapModels ( )
68+ }
6669 }
6770
6871 var mapNameOverlay : some View {
@@ -73,3 +76,12 @@ struct DownloadPreplannedMapAreaView: View {
7376 . background ( . thinMaterial, ignoresSafeAreaEdges: . horizontal)
7477 }
7578}
79+
80+ private extension Viewpoint {
81+ func zoomedIn( ) -> Viewpoint {
82+ let builder = EnvelopeBuilder ( envelope: self . targetGeometry. extent)
83+ builder. expand ( by: 0.5 )
84+ let zoomEnvelope = builder. toGeometry ( )
85+ return Viewpoint ( boundingGeometry: zoomEnvelope)
86+ }
87+ }
0 commit comments