// // LocationManager.swift // Gas Man // // Created by Kameron Kenny on 3/17/25. // import Foundation import CoreLocation import Combine class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate { private let manager = CLLocationManager() @Published var location: CLLocation? @Published var placemark: CLPlacemark? override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest } func requestLocation() { manager.requestWhenInUseAuthorization() manager.requestLocation() } // CLLocationManagerDelegate func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { if let loc = locations.first { DispatchQueue.main.async { self.location = loc } // Reverse geocode let geocoder = CLGeocoder() geocoder.reverseGeocodeLocation(loc) { [weak self] placemarks, error in if let error = error { print("Reverse geocode error: \(error)") return } if let firstPlacemark = placemarks?.first { DispatchQueue.main.async { self?.placemark = firstPlacemark } } } } } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Failed to get user location: \(error)") } }