How to get current location using CLLocationManager in iOS

I can already find the current location using latitude and longitude, but I would also like to find the current location based on the zip code.

Here is what I still have:

.h

#import <MapKit/MapKit.h> #import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController : UIViewController<CLLocationManagerDelegate> { CLLocationManager *locationManager; CLLocation *currentLocation; IBOutlet UILabel *label1; IBOutlet UILabel *lable2; } @property (weak, nonatomic) IBOutlet MKMapView *myMapview; @property (weak, nonatomic) IBOutlet UILabel *label2; @property (weak, nonatomic) IBOutlet UILabel *lable1; @end 

wow

 #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. locationManager = [[CLLocationManager alloc]init]; locationManager.delegate = self; locationManager.distanceFilter = kCLDistanceFilterNone; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; _myMapview.showsUserLocation = YES; [self->locationManager startUpdatingLocation]; CLLocation *location = [locationManager location]; CLLocationCoordinate2D coordinate = [location coordinate]; NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; //NSLog(@"dLatitude : %@", latitude); //NSLog(@"dLongitude : %@",longitude); NSLog(@"MY HOME :%@", latitude); NSLog(@"MY HOME: %@ ", longitude); } #pragma mark CLLocationManager Delegate - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { currentLocation = [locations objectAtIndex:0]; [locationManager stopUpdatingLocation]; [self->locationManager stopUpdatingLocation]; NSLog(@"my latitude :%f",currentLocation.coordinate.latitude); NSLog(@"my longitude :%f",currentLocation.coordinate.longitude); label1.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude]; lable2.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude]; NSLog(@"Detected Location : %f, %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude); CLGeocoder *geocoder = [[CLGeocoder alloc] init] ; [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) { if (error) { NSLog(@"Geocode failed with error: %@", error); return; } NSLog(@"Monday"); CLPlacemark *placemark = [placemarks objectAtIndex:0]; NSLog(@"placemark.ISOcountryCode %@",placemark.ISOcountryCode); }]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"didUpdateToLocation: %@", newLocation); CLLocation *currentLocation = newLocation; if (currentLocation != nil) { label1.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.longitude]; lable2.text = [NSString stringWithFormat:@"%.8f", currentLocation.coordinate.latitude]; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 
+7
ios objective-c iphone
source share
4 answers

Step 1: Import MobileCoreServices into .h File

#import <MobileCoreServices/MobileCoreServices.h>

Step 2: Add CLLocationManagerDelegate Delegate

 @interface yourViewController : UIViewController<CLLocationManagerDelegate> { CLLocationManager *locationManager; CLLocation *currentLocation; } 

Step 3: Add this code to the class file

 - (void)viewDidLoad { [super viewDidLoad]; [self CurrentLocationIdentifier]; // call this method } 

Step 4: Location Method

 //------------ Current Location Address----- -(void)CurrentLocationIdentifier { //---- For getting current gps location locationManager = [CLLocationManager new]; locationManager.delegate = self; locationManager.distanceFilter = kCLDistanceFilterNone; locationManager.desiredAccuracy = kCLLocationAccuracyBest; [locationManager startUpdatingLocation]; //------ } - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { currentLocation = [locations objectAtIndex:0]; [locationManager stopUpdatingLocation]; CLGeocoder *geocoder = [[CLGeocoder alloc] init] ; [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) { if (!(error)) { CLPlacemark *placemark = [placemarks objectAtIndex:0]; NSLog(@"\nCurrent Location Detected\n"); NSLog(@"placemark %@",placemark); NSString *locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]; NSString *Address = [[NSString alloc]initWithString:locatedAt]; NSString *Area = [[NSString alloc]initWithString:placemark.locality]; NSString *Country = [[NSString alloc]initWithString:placemark.country]; NSString *CountryArea = [NSString stringWithFormat:@"%@, %@", Area,Country]; NSLog(@"%@",CountryArea); } else { NSLog(@"Geocode failed with error %@", error); NSLog(@"\nCurrent Location Not Detected\n"); //return; CountryArea = NULL; } /*---- For more results placemark.region); placemark.country); placemark.locality); placemark.name); placemark.ocean); placemark.postalCode); placemark.subLocality); placemark.location); ------*/ }]; } 
+21
source share

Here is the code to get the user's current location using the block

1) #import <CoreLocation/CoreLocation.h>

2) <CLLocationManagerDelegate>

3) in the .h file

 //Location typedef void(^locationBlock)(); //Location -(void)GetCurrentLocation_WithBlock:(void(^)())block; @property (nonatomic, strong) locationBlock _locationBlock; @property (nonatomic,copy)CLLocationManager *locationManager; @property (nonatomic)CLLocationCoordinate2D coordinate; @property (nonatomic,strong) NSString *current_Lat; @property (nonatomic,strong) NSString *current_Long; 

4) in the .m file

 #pragma mark - CLLocationManager -(void)GetCurrentLocation_WithBlock:(void(^)())block { self._locationBlock = block; _locationManager = [[CLLocationManager alloc] init]; [_locationManager setDelegate:self]; [_locationManager setDistanceFilter:kCLDistanceFilterNone]; [_locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; if (IS_OS_8_OR_LATER) { if ([_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) { [_locationManager requestWhenInUseAuthorization]; [_locationManager requestAlwaysAuthorization]; } } [_locationManager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *currentLoc=[locations objectAtIndex:0]; _coordinate=currentLoc.coordinate; _current_Lat = [NSString stringWithFormat:@"%f",currentLoc.coordinate.latitude]; _current_Long = [NSString stringWithFormat:@"%f",currentLoc.coordinate.longitude]; NSLog(@"here lat %@ and here long %@",_current_Lat,_current_Long); self._locationBlock(); [_locationManager stopUpdatingLocation]; _locationManager = nil; } - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { } 

5) Call function

 - (void)viewDidLoad { [super viewDidLoad]; [self GetCurrentLocation_WithBlock:^{ NSLog(@"Lat ::%f,Long ::%f",[self.current_Lat floatValue],[self.current_Long floatValue]); }]; } 

6) And add the line below to .plist

In the Info.plist file, you must add either or both of the keys listed below.

 NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription 
+6
source share

If you’re not asked for permissions at first launch, you won’t be able to get your current location.

iOS8 Gets Major API Changes Using LocationsServices

Assuming that [CLLocationManager locationServicesEnabled] returns YES,

With the first launch of the iOS application [iOS7 and iOS8] - locationMangers (CLLocationManager)

+1
source share

You can call the Google Maps Service to get the location using zipcode:

Just enter your zip code at address={your zipcode} .

0
source share

All Articles