Get User's Current Location / Coordinates

cllocationmanager, ios, iphone, location, swift

Solution

To get a user's current location you need to declare:

let locationManager = CLLocationManager()

In `viewDidLoad()` you have to instantiate the `CLLocationManager` class, like so:

// Ask for Authorisation from the User.
self.locationManager.requestAlwaysAuthorization() 

// For use in foreground
self.locationManager.requestWhenInUseAuthorization()

if CLLocationManager.locationServicesEnabled() {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    locationManager.startUpdatingLocation()
}

Then in CLLocationManagerDelegate method you can get user's current location coordinates:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let locValue: CLLocationCoordinate2D = manager.location?.coordinate else { return }
    print("locations = \(locValue.latitude) \(locValue.longitude)")
}

In the info.plist you will have to add `NSLocationAlwaysUsageDescription` and your custom alert message like; AppName(Demo App) would like to use your current location.

Problem

How can I store the user's current location and also show the location on a map? I am able to show pre-defined coordinates on a map, I just don't know how to receive information from the device. Also I know I have to add some items into a Plist. How can I do that?

Original source

Related problems