Mercurial > public > geoquiz
diff GeoQuiz/Helpers/CityMap.swift @ 8:e09959b4e4a8
fix bugs
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 06 Oct 2022 11:14:34 +0200 |
parents | d945e52b0704 |
children |
line wrap: on
line diff
--- a/GeoQuiz/Helpers/CityMap.swift Tue Oct 04 18:54:24 2022 +0200 +++ b/GeoQuiz/Helpers/CityMap.swift Thu Oct 06 11:14:34 2022 +0200 @@ -6,13 +6,17 @@ // import SwiftUI +import MapKit struct CityMap: View { @ObservedObject var game: CityGame + @State private var mapImage: UIImage? = nil + + let geo: GeometryProxy var body: some View { - Group { - if let mapImage = game.mapImage { + VStack { + if let mapImage = mapImage { Image(uiImage: mapImage) .resizable() .scaledToFit() @@ -22,11 +26,42 @@ ProgressView() } } + .onChange(of: game.correctAnswer.value) { _ in getMapImage() } + .onAppear(perform: getMapImage) + } + + private func getMapImage() { + let region = MKCoordinateRegion( + center: CLLocationCoordinate2D( + latitude: game.correctAnswer.value.lat, + longitude: game.correctAnswer.value.lon + ), + span: MKCoordinateSpan( + latitudeDelta: 0.1, + longitudeDelta: 0.1 + ) + ) + + // Map options + let mapOptions = MKMapSnapshotter.Options() + mapOptions.region = region + mapOptions.size = CGSize(width: geo.size.width * 0.8, height: geo.size.width * 0.8) + mapOptions.pointOfInterestFilter = .excludingAll + + // Create the snapshotter and run it + let snapshotter = MKMapSnapshotter(options: mapOptions) + snapshotter.start { (snapshot, error) in + if let snapshot = snapshot { + self.mapImage = snapshot.image + } else if let error = error { + print(error.localizedDescription) + } + } } } -struct CityMap_Previews: PreviewProvider { - static var previews: some View { - CityMap(game: CityGame()) - } -} +//struct CityMap_Previews: PreviewProvider { +// static var previews: some View { +// CityMap(game: CityGame()) +// } +//}