·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> iOS定位-普通定位(没有地图)-反地理编码(得到具体位置)

iOS定位-普通定位(没有地图)-反地理编码(得到具体位置)

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23
#import <CoreLocation/CoreLocation.h>   使用到的头文件  要引入CoreLocation这个包
<CLLocationManagerDelegate>             使用的代理名称
//1.使用定位服务
    //设置app有访问定位服务的权限
    //在使用应用期间 / 始终(app在后台)
    //info.plist文件添加以下两条(或者其中一条):
    //NSLocationWhenInUseUsageDescription 在使用应用期间
    //NSLocationAlwaysUsageDescription  始终
    //2.LocationManager 对象管理相关的定位服务
    _manager = [[CLLocationManager alloc] init];
    //manager判断: 手机是否开启定位 / app是否有访问定位的权限
    //[CLLocationManager locationServicesEnabled]; //手机是否开启定位
    //[CLLocationManager authorizationStatus];  //app访问定位的权限的状态
    if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {
        [_manager requestWhenInUseAuthorization]; //向用户请求访问定位服务的权限
    }
    _manager.delegate = self;
    _manager.desiredAccuracy = kCLLocationAccuracyBest;
    _manager.distanceFilter = 1.0f;
    [_manager startUpdatingLocation];

//定位代理经纬度回调
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    [_manager stopUpdatingLocation];
    CLGeocoder * geoCoder = [[CLGeocoder alloc] init];
    [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
        for (CLPlacemark * placemark in placemarks) {
            NSDictionary *test = [placemark addressDictionary];
            //  Country(国家)  State(城市)  SubLocality(区) Name全称
            NSLog(@"%@", [test objectForKey:@"Name"]);
        }
    }];
}