I want my program to display the users location on the map. It was working at first then randomly stopped so i added the code below to try to fix it but I'm having problems. Thanks in advance!
override func viewDidLoad()
{
super.viewDidLoad()
self.locationManager.delegate = self
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
if CLLocationManager.locationServicesEnabled()
{
let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus()
if status == CLAuthorizationStatus.NotDetermined
{
locationManager.requestAlwaysAuthorization()
}
} else {
print("locationServices disenabled")
}
locationManager.startUpdatingLocation()
self.locationManager.startUpdatingLocation()
self.mapView.showsUserLocation = true
mapView.delegate = self
centerMapOnLocation(initialLocation)
addBoundry()
}
I was having the same issue, even with
NSLocationAlwaysUsageDescription
andNSLocationWhenInUseUsageDescription
set in info.plist. My debugger told me to also setNSLocationAlwaysAndWhenInUseUsageDescription
...so I did it. It worked!You required to call,
as well
to use location smoothly in foreground also!!!
and you should not need two instance to call
startupdatinglocation
. keep one. you should use instance or global variable instead of local to get location throughout the scope.Update :
You have to set two keys in
info.plist
like,NSLocationAlwaysUsageDescription
andNSLocationWhenInUseUsageDescription
with it's usage description.If you want the "WhenInUse" notification you should only add "Privacy - Location When In Use Usage Description" in your info.plist but if you want the "Always" access your info.plist should look like this info.plist screenshot:
You don't have to add any request authorization like requestAlwaysAuthorization or requestWhenInUseAuthorization