← Back to index

LocationManager

Spots
CodeWhat It DoesHow It Does It
▶ IMPORTS
import Foundation import Combine import CoreLocationFramework importsImports Foundation, Combine, CoreLocation.
class LocationManager: NSObject, ObservableObject, CLLocationManagerDelegate { private let manager = CLLocationManager() @Published var location: CLLocation? @Published var authorizationStatus: CLAuthorizationStatus = .notDetermined override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyHundredMeters authorizationStatus = manager.authorizationStatus } func requestLocation() { switch manager.authorizationStatus { case .notDetermined: manager.requestWhenInUseAuthorization() case .authorizedWhenInUse, .authorizedAlways: manager.requestLocation() default: break } } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { location = locations.last } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("LocationManager error: \(error.localizedDescription)") } func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { authorizationStatus = manager.authorizationStatus if manager.authorizationStatus == .authorizedWhenInUse || manager.authorizationStatus == .authorizedAlways { manager.requestLocation() } } }`LocationManager` classDefines the `LocationManager` class. Conforms to NSObject, ObservableObject, CLLocationManagerDelegate.