When I try to use map in iOS 8, I get below error.
Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
For this I tried solution from here, but still no luck.
Below is what I did.
Step 1. Have entry in Info.plist
NSLocationWhenInUseUsageDescription - This is test text
Step 2. Updated -(CLLocationCoordinate2D) getLocation
-(CLLocationCoordinate2D) getLocation{
CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// this is change
if(IS_OS_8_OR_LATER) {
[locationManager requestWhenInUseAuthorization];
}
[locationManager startUpdatingLocation];
CLLocation *location = [locationManager location];
CLLocationCoordinate2D coordinate = [location coordinate];
return coordinate;
}
Step 3. Prefix.pch
#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
Step 4. Delete the app again with below in viewDidLoad.
CLLocationCoordinate2D theCoordinate;
theCoordinate = [self getLocation];
NSLog(@"ffffff===%f===%f", theCoordinate.latitude, theCoordinate.longitude);
Still I get output as
ffffff===0.000===0.000
Note:
I get warning, but that is just for half seconds and disappears and then I get message as
CLLocationCoordinate2D theCoordinate;
theCoordinate = [self getLocation];
NSLog(@"ffffff===%f===%f", theCoordinate.latitude, theCoordinate.longitude);
When I go in setting to check the status for Location, below is what I have.
Any idea why this is happening?
The
requestWhenInUseAuthorization
runs asynchronously, so you should not be callingstartUpdatingLocation
until you get a change in authorization status in your delegate.You need to implement the CLLocationManager Delegate ( -(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations ) to get location updates.
Here's a code snippet for your reference:
Alternatively, you can implement the Mapkit's following delegate method:
Yeah! Got the solution, Here is my whole code & things added to make it working. Special thanks to @MBarton for his great help. Also Thanks to @ Vinh Nguyen for investing his precious time in solving my issue.
Added Core Location Framework under Target-> General-> Linked Frameworks & Libraries
Added in .plist file
See Screenshot:
In my
ViewController.h
Then in
ViewController.m
Ufff...! Got the solution after fighting with many codes since last 5 days...
Referred from here
Not sure what was real problem, but putting below code in
viewDidLoad
solve problem.Reference