annotate GeoQuiz/Components/CityMap.swift @ 21:b145c408f791

refactor code
author Dennis C. M. <dennis@denniscm.com>
date Tue, 25 Oct 2022 15:30:01 +0200
parents e281791e0494
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
20
e281791e0494 finish implementation
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
2 // CityMap.swift
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
5 // Created by Dennis Concepción Martín on 4/10/22.
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
9 import MapKit
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 struct CityMap: View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
12 @ObservedObject var game: CityGameController
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
13
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
14 @StateObject var mapController: MapController
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
15
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
16 init(game: CityGameController) {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
17 self.game = game
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
18 self._mapController = StateObject(wrappedValue: MapController())
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
19 }
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
20
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 var body: some View {
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
22 VStack {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
23 if let mapImage = mapController.image {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
24 Image(uiImage: mapImage)
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
25 .resizable()
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
26 .scaledToFit()
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
27 .clipShape(Circle())
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
28 .overlay {
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
29 Circle()
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
30 .strokeBorder(.white, lineWidth: 4)
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
31 }
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
32 .shadow(radius: 10)
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
33 } else {
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
34 ProgressView()
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
35 }
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
36 }
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
37 .onChange(of: game.correctAnswer.value) { _ in
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
38 mapController.getMapImage(lat: game.correctAnswer.value.lat, lon: game.correctAnswer.value.lon)
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
39 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
40
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
41 .onAppear {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
42 mapController.getMapImage(lat: game.correctAnswer.value.lat, lon: game.correctAnswer.value.lon)
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
43 }
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
47 struct CityMap_Previews: PreviewProvider {
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
48 static var previews: some View {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
49 CityMap(game: CityGameController())
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
50 }
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
51 }