iOS 道路之行iOS 应用层

iOS定位获取国家和城市

2017-06-28  本文已影响973人  陌上北辰

1.在target->Build Phases->link Binary With Libraries中加入
CoreLocation.framework
2.在info.plist中加入
Privacy - Location Always Usage Description //总是开启 Privacy - Location When In Use Usage Description //在使用期间开启
3.在需要定位的页面加入头文件
#import <CoreLocation/CoreLocation.h>
#import <CoreLocation/CLLocationManagerDelegate.h>
4.声明一个定位管理服务对象
@property(nonatomic ,strong)CLLocationManager *locationManager;
5.遵守定位管理服务协议
CLLocationManagerDelegate
6.在viewDidLoad中初始化定位服务对象- (void)viewDidLoad { [super viewDidLoad]; //定位服务初始化对象 _locationManager = [[CLLocationManager alloc]init ]; _locationManager.delegate = self; _locationManager.desiredAccuracy = kCLLocationAccuracyBest; _locationManager.distanceFilter = 1000.0f; if (![CLLocationManager locationServicesEnabled]) { NSLog(@"定位服务当前可能尚未打开,请设置打开!"); return; }

  1. 实现CLLocationManagerDelegate 协议方法:
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
    CLLocation *currentLocation = [locations lastObject]; CLGeocoder *geocoder = [[CLGeocoder alloc]init]; //反地理编码 [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
    MMLog(@"--array--%d---error--%@",(int)placemarks.count,error);
    if (placemarks.count > 0) {
    CLPlacemark *placemark = [placemarks objectAtIndex:0];
    NSString *city = placemark.administrativeArea;//获取城市
    NSString *country = placemark.country;// 获取国家
    NSLog(@"位于:%@",city);
    MMLog(@"%@",placemark.addressDictionary[@"Name"]);
    }
    }];
    }
    `
    这只是作为真机测试
上一篇下一篇

猜你喜欢

热点阅读