Mercurial > public > geoquiz
view 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 source
// // CityMap.swift // GeoQuiz // // Created by Dennis Concepción Martín on 4/10/22. // import SwiftUI import MapKit struct CityMap: View { @ObservedObject var game: CityGame @State private var mapImage: UIImage? = nil let geo: GeometryProxy var body: some View { VStack { if let mapImage = mapImage { Image(uiImage: mapImage) .resizable() .scaledToFit() .clipShape(RoundedRectangle(cornerRadius: 20)) .shadow(radius: 10) } else { 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()) // } //}