I need to find my current location with CoreLocation
, I tried multiple methods but so far my CLLocationManager
has only returned 0's.. (0.000.00.000
).
Here's my code (updated to work):
Imports:
#import <CoreLocation/CoreLocation.h>
Declared:
IBOutlet CLLocationManager *locationManager;
IBOutlet UILabel *latLabel;
IBOutlet UILabel *longLabel;
Functions:
- (void)getLocation { //Called when needed
latLabel.text = [NSString stringWithFormat:@"%f", locationManager.location.coordinate.latitude];
longLabel.text = [NSString stringWithFormat:@"%f", locationManager.location.coordinate.longitude];
}
- (void)viewDidLoad {
locationManager = [[CLLocationManager alloc] init];
locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m
[locationManager startUpdatingLocation];
}
With CLLocationManager you don't necessary get the location information immediately. The GPS and other devices that obtain location information might not be initialized. They can take a while before they have any information. Instead you need to create a delegate object that responds to
locationManager:didUpdateToLocation:fromLocation:
and then set it as the delegate of the location manager.see here
You can find your location using
CoreLocation
like this:import
CoreLocation
:Declare
CLLocationManager
:Initialize the
locationManager
inviewDidLoad
and create a function that canreturn
the current location as anNSString
:And calling the
deviceLocation
function will return the location as expected:This is just an example. Initializing
CLLocationManager
without the user being ready for it isn't a good idea. And, of course,locationManager.location.coordinate
can be used to getlatitude
andlongitude
at will afterCLLocationManager
has been initialized.Don't forget to add the
CoreLocation.framework
in your project settings under the Build Phases tab (Targets->Build Phases->Link Binary
).Here you can show current location with annotation details
in ViewController.h
in ViewController.m