iOS判断当前经纬度是否在中国

1、要导入定位工具包。
#import

2、全局CLLocationManager对象,用于定位。一定要全局,不然会因为引用计数变成0导致定位开启就没了后文。一定要全局!一定要全局!重要的事情说三遍。
@property (nonatomic, strong) CLLocationManager *locationManager;

3、创建CLLocationManager对象,开启定位方法。
//开始定位

- (void)startLocation {
if ([CLLocationManager locationServicesEnabled]) {
//CLog(@"--------开始定位");
self.locationManager = [[CLLocationManager alloc]init];
//设置代理
self.locationManager.delegate = self;
//控制定位精度,越高耗电量越
self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
// 询问用户总是授权可以定位
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager requestAlwaysAuthorization];
self.locationManager.distanceFilter = 10.0f;
//开始定位
[self.locationManager startUpdatingLocation];
}
}
4、签订代理,并实现两个代理方法
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {if ([error code] == kCLErrorDenied) {//CLog(@"访问被拒绝"); }if ([error code] == kCLErrorLocationUnknown) {//CLog(@"无法获取位置信息"); }}


//定位代理经纬度回调
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray*)locations {

CLLocation *newLocation = locations[0];
//拿到定位信息,判断是非是中国,判断码是“CN”
[[[CLGeocoder alloc]init] reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {
if (error || placemarks.count == 0) {
NSLog(@"不能确定是在中国");
} else {
CLPlacemark *placemark=[placemarks firstObject];
if ([placemark.ISOcountryCode isEqualToString:@"CN"]) {
NSLog(@"确定是在中国");
} else {
NSLog(@"确定不在中国");
}
}
}];
//系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新
[manager stopUpdatingLocation];
}
5、在infoplist文件中加入Privacy - Location When In Use Usage Description,值为显示的提示信息,可以自定义。
【iOS判断当前经纬度是否在中国】大功告成!

    推荐阅读