iOS --- 使用CoreLocation获取当前所在城市等地理位置信息

原创 2015年07月07日 14:06:57

在之前的一篇博客-CoreLocation — iOS中的位置信息中, 简单描述了CoreLocation的使用, 并获取经纬度信息. 接下来, 将要从地理位置信息中反向解析出当前所在城市等信息.
首先, 初始化CLLocationManager对象, 设置delegate,
然后startUpdatingLocation即开始定位.
注意: 要继承CLLocationManagerDelegate协议.

@property(strong, nonatomic) CLLocationManager *locationManager;

#pragma mark - 获取当前定位城市

- (void)locate {
  self.currentCity = [[NSString alloc] init];
  // 判断是否开启定位
  if ([CLLocationManager locationServicesEnabled]) {
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    [self.locationManager startUpdatingLocation];
  } else {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"home_cannot_locate", comment:@"无法进行定位") message:NSLocalizedString(@"home_cannot_locate_message", comment:@"请检查您的设备是否开启定位功能") delegate:self cancelButtonTitle:NSLocalizedString(@"common_confirm",comment:@"确定") otherButtonTitles:nil, nil];
    [alert show];
  }
}

然后, 实现didUpdateLocations方法, 并在其中解析出城市信息.

#pragma mark - CoreLocation Delegate

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
  CLLocation *currentLocation = [locations lastObject]; // 最后一个值为最新位置
  CLGeocoder *geoCoder = [[CLGeocoder alloc] init];
  // 根据经纬度反向得出位置城市信息
  [geoCoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error) {
    if (placemarks.count > 0) {
      CLPlacemark *placeMark = placemarks[0];
      self.currentCity = placeMark.locality;
      // ? placeMark.locality : placeMark.administrativeArea;
      if (!self.currentCity) {
        self.currentCity = NSLocalizedString(@"home_cannot_locate_city", comment:@"无法定位当前城市");
      }
// 获取城市信息后, 异步更新界面信息.      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        dispatch_async(dispatch_get_main_queue(), ^{
          self.cityDict[@"*"] = @[self.currentCity];
          [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
        });
      });
    } else if (error == nil && placemarks.count == 0) {
      NSLog(@"No location and error returned");
    } else if (error) {
      NSLog(@"Location error: %@", error);
    }
  }];

  [manager stopUpdatingLocation];
}

结果如图:

无法定位 定位成功
这里写图片描述 这里写图片描述

LBS基站定位和GPS卫星定位对比

备注: 本文为网上找到的一个word文档,看了之后,觉得总结相当不错,现在把其贴出来共享!同时感谢原作者无私的奉献精神!   位置定位大体上可以分为两大类:   1. GPS(Global ...
  • sdefzhpk
  • sdefzhpk
  • 2012年12月13日 22:40
  • 26205

iOS --- 使用CoreLocation来获取地理位置信息

在iOS系统中, 使用CoreLocation可以获取到用户当前位置, 以及设备移动信息.

iOS8使用CoreLocation获取当前地理位置

1.导入CoreLocation.framework框架 #import 2.定义CLLocationManager类型的属性 @property (strong, nonatomic)...
  • uuqiu
  • uuqiu
  • 2015年08月20日 21:09
  • 176

iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试

(推荐本人创建的一个iOS开源代码收集网站 Code4App) LBS是移动应用的一个大热点。很多App都允许(或者说要求)获取用户的地理位置。这篇文章将简要谈谈如何利用CoreLocation...

iOS利用CoreLocation获取地理位置以及如何在模拟器进行调试

[原文地址:http://blog.csdn.net/whaomian/article/details/6807739] LBS是移动应用的一个大热点。很多App都允许(或者说要求)获取用户的地...
  • donhao
  • donhao
  • 2012年02月01日 16:48
  • 919

iOS上地图通过地理位置经纬度找出城市等信息

通过经纬度获得城市等信息需要添加两个协议: #import #import “MapKit/MapKit.h” @interface GPSViewController : UIVie...

iOS项目开发实战——使用CoreLocation获取当前位置信息

随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息,位置服务已经是当前的热门应用如微信,陌陌等社交应用的杀手锏。而在iOS开发中,苹果已经给我们提供了一个位置接口,CoreLoc...

iOS 获取当前地理位置文本

以下内容摘抄自网络,著作权属于原作者方法1:使用ios自带联网查询功能,断网会报 PBRequester failed with Error Error Domain=NSURLErrorDoma...
  • jichunw
  • jichunw
  • 2015年03月10日 13:41
  • 1071

iOS获取当前地理位置文本

以下内容摘抄自网络,著作权属于原作者方法1:使用ios自带联网查询功能断网会报 PBRequester failed with Error Error Domain=NSURLErrorDomain...
  • jichunw
  • jichunw
  • 2016年03月04日 16:10
  • 233

IOS获取当前地理位置文本

以下内容摘抄自网络,著作权属于原作者 方法1:使用ios自带联网查询功能,断网会报 PBRequester failed with Error Error Domain=NSURLErrorDo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS --- 使用CoreLocation获取当前所在城市等地理位置信息
举报原因:
原因补充:

(最多只允许输入30个字)