if (!locationManager)
{
if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
{
[[ShareTool shared] msgBox:@"您关闭了的定位功能,将无法收到位置信息,建议您到系统设置打开定位功能!"];
}
else
{
//开启定位
locationManager = [[CLLocationManager alloc] init];//创建位置管理器
locationManager.delegate=self;
locationManager.desiredAccuracy=kCLLocationAccuracyBest;
locationManager.distanceFilter=1000.0f;
//启动位置更新
[locationManager startUpdatingLocation];
}
}
locationManager 应该为全家变量或是属性,否则会提前释放,从而导致代理方法无法实现。
#pragma mark --CLLocationManagerDelegate
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
//得到newLocation
CLLocation *cloc = [locations lastObject];
CLGeocoder * geoCoder = [[CLGeocoder alloc] init];
[geoCoder reverseGeocodeLocation:cloc completionHandler:^(NSArray *placemarks, NSError *error) {
if (!error)
{
for (CLPlacemark * placemark in placemarks) {
NSDictionary *test = [placemark addressDictionary];
// Country(国家) State(城市) SubLocality(区)
NSLog(@"%@", [test objectForKey:@"State"]);
}
}
[locationManager stopUpdatingLocation];
}];
}