iOS定位和位置信息获取

一、添加两个动态库,CoreLocation.framework(定位获取坐标)MapKit.framework(反查位置信息)


二、在.h文件实现代理

@interface ViewController : UIViewController <CLLocationManagerDelegate>


三、在.m文件定义成员(如果不定义成成员变量好像无法定位成功)

@property (nonatomic, strong) CLLocationManager *locationManager;   // 地理位置


四、开始定位函数,在用的地方调用就行

#pragma mark 开始定位
- (void) locationStart
{
    self.locationManager = [[CLLocationManager alloc] init];
    
    if ([CLLocationManager locationServicesEnabled]) {
        self.locationManager.delegate = self;
        self.locationManager.distanceFilter = 200;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        [self.locationManager startUpdatingLocation];
    } else {
        NSLog("定位失败");
    }
}


五、实现代理函数

#pragma mark ------------------ CLLocationManagerDelegate ------------------
#pragma mark 定位成功
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    // 获取最新经纬度
    CLLocation *newLocation = locations[0];
    CLLocationCoordinate2D oldCoordinate = newLocation.coordinate;
    NSLog(@"旧的经度:%f,旧的纬度:%f",oldCoordinate.longitude,oldCoordinate.latitude);
    
//    CLLocation *newLocation = locations[1];
//    CLLocationCoordinate2D newCoordinate = newLocation.coordinate;
//    NSLog(@"经度:%f,纬度:%f",newCoordinate.longitude,newCoordinate.latitude);

    // 停止定位
    [self.locationManager stopUpdatingLocation];
    
    // 获取城市名
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation: newLocation completionHandler:^(NSArray *array, NSError *error) {
        if (array.count > 0) {
            CLPlacemark *placemark = [array objectAtIndex:0];
            NSString *country = placemark.ISOcountryCode;                       // 国家
            NSString *city = placemark.locality;                                // 城市
            NSString *administrativeArea = [placemark administrativeArea];      // 省份
            
            NSLog(@"你所在的国家是:%@,城市:%@, 省份: %@", country, city, administrativeArea);
        }
    }];
}

#pragma mark 定位失败
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog("定位失败");
}





















你可能感兴趣的:(iOS定位和位置信息获取)