How to get current location using CLLocationManager in iOS

后端 未结 4 1372
一个人的身影
一个人的身影 2020-12-09 13:03

I can already find the current location using latitude and longitude, but I would also like to be able to find the current location given a zip code.

Here is what I

4条回答
  •  生来不讨喜
    2020-12-09 14:02

    Here is a code to get user current location using block

    1) #import

    2)

    3) in .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 .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 below line to .plist

    Any one or both of below keys needs to be added in Info.plist file.

    NSLocationWhenInUseUsageDescription
    NSLocationAlwaysUsageDescription
    

提交回复
热议问题