view GeoQuiz/Components/CityMapHelper.swift @ 19:f140bb277c96

refactor code
author Dennis C. M. <dennis@denniscm.com>
date Sun, 23 Oct 2022 00:11:38 +0100
parents a793f33f05fb
children
line wrap: on
line source

//
//  CityMapHelper.swift
//  GeoQuiz
//
//  Created by Dennis Concepción Martín on 4/10/22.
//

import SwiftUI
import MapKit

struct CityMap: View {
    @ObservedObject var game: CityGameController
    
    @StateObject var mapController: MapController
    
    init(game: CityGameController) {
        self.game = game
        self._mapController = StateObject(wrappedValue: MapController())
    }
    
    var body: some View {
        VStack {
            if let mapImage = mapController.image {
                Image(uiImage: mapImage)
                    .resizable()
                    .scaledToFit()
                    .clipShape(Circle())
                    .overlay {
                        Circle()
                            .strokeBorder(.white, lineWidth: 4)
                    }
                    .shadow(radius: 10)
            } else {
                ProgressView()
            }
        }
        .onChange(of: game.correctAnswer.value) { _ in
            mapController.getMapImage(lat: game.correctAnswer.value.lat, lon: game.correctAnswer.value.lon)
        }
        
        .onAppear {
            mapController.getMapImage(lat: game.correctAnswer.value.lat, lon: game.correctAnswer.value.lon)
        }
    }
}

struct CityMap_Previews: PreviewProvider {
    static var previews: some View {
        CityMap(game: CityGameController())
    }
}