Untitled

 avatar
unknown
swift
2 years ago
3.2 kB
7
Indexable
//
//  LocationManager.swift
//  Garageworks-iOS-Revamp
//
//  Created by mac on 16/11/22.
//

//
//  LocationManager.swift
//  GoogleMapsWithSwiftUISample
//
//  Created by Alexander Fanaian on 4/12/20.
//  Copyright © 2020 Practice. All rights reserved.
//

import Foundation
import Combine
import CoreLocation
import SwiftUI
//import MapKit

class LocationManager: NSObject, ObservableObject {
    
   
    
//    var currentLat: Double?
//    var currentLong: Double?
    private var locationManager = CLLocationManager()
    @Published var lastKnownLocation: CLLocation? = nil
    
    // 1
    @Published var location: CLLocation? {
        willSet { locationManager.location }
    }
    
    // 2
    var latitude: CLLocationDegrees {
        return location?.coordinate.latitude ?? 20.5937
    }
    
    var longitude: CLLocationDegrees {
        return location?.coordinate.longitude ?? 78.9629
    }
    
    var didChangeLocationAuthorizationStatus: ((_ status: CLAuthorizationStatus) -> Void)?
    
    // 3
    override init() {
        super.init()
        //Kapil
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()
        
        print("INSIDE LOCATION  MANAGER")
        print(" Current Latitide: \(locationManager.location?.coordinate.latitude),Current Longitude\(locationManager.location?.coordinate.longitude)")
//
//        latitude = locationManager.location?.coordinate.latitude ??
//        longitude = locationManager.location?.coordinate.longitude ??
        
//        locationManager.delegate = self
//        locationManager.desiredAccuracy = kCLLocationAccuracyBest
//        //      locationManager.requestWhenInUseAuthorization()
//        locationManager.startUpdatingLocation()
//        locationManager.requestAlwaysAuthorization()
//        locationManager.distanceFilter = 50
        //Location Manager code to fetch current location
//            self.locationManager.delegate = self
//            self.locationManager.startUpdatingLocation()
    }
}

extension LocationManager: CLLocationManagerDelegate {
    // 4
    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        guard status == .authorizedWhenInUse else {
            return
        }
        // 4
        didChangeLocationAuthorizationStatus?(status)
        locationManager.startUpdatingLocation()
    }
    
    // 6
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        // Notify listeners that the user has a new location
//        self.lastKnownLocation = locations.last
        locationManager = manager
        
        
//        var location1 = locationManager.location?.coordinate
        
//        print("Locations: \(location1)")
        // 8
        //    locationManager.stopUpdatingLocation()
    }
    
    private func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
        locationManager.stopUpdatingLocation()
        if ((error) != nil) {
            print(error.localizedDescription ?? "")
        }
    }
}
Editor is loading...