iOS - 使用CoreLocation获取当前所在城市

在之前的一篇博客-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];
}

结果如图:

无法定位 定位成功

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 13:44:06

iOS - 使用CoreLocation获取当前所在城市的相关文章

网页获取用户所在城市

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>自动获取定位访问者当前城市</title> <!--不可省略--> <script type="text/javascript" src="http://api.map.baidu

获取Ip所在城市名与详细

//获取ip和地理信息 string url = "http://pv.sohu.com/cityjson"; WebRequest wRequest = WebRequest.Create(url); wRequest.Method = "GET"; wRequest.ContentType = "text/html;charset=UTF-8"; WebResponse wResponse = wRequest.GetResponse();

C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市

百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsCC9UTkBO5V5Qg1WZ9,其中ak是密钥,自行去申请即可,便于大家测试,楼主就公布并了自己的Key,这样可以直接获取到数据. 获取到的数据是这样的: {"error":0,"status":"success","date"

PHP 根据IP地址获取所在城市

有这样的需求,需要根据用户的IP地址,定位用户所在的城市. 本文记录性文章,无逻辑性.有这样需求的朋友,可以直接拷贝使用.直接上代码,不需赘述. <?php header('Content-Type:text/html;Charset=utf-8'); function GetIp(){ $realip = ''; $unknown = 'unknown'; if (isset($_SERVER)){ if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) &&

php 通过ip获取所在城市地址信息 获取计算机外网ip

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

sqlserver 调用qq map 服务,根据地点获取所在城市

sqlserver 调用qq map 服务,根据地点获取所在城市 首先需要解决的是如何在SQL SERVER中调用web service,其次是针对web service的返回值json进行解析: 1.调用web service create proc getCityByPosition( @url varchar(2048) --Your Web Service Url (invoked) ) as declare @Object as Int; declare @ResponseText a

js根据ip地址获取所在城市

话不多说,直接贴代码! 将这段代码运行一下就OK了: <html xmlns=""> <head runat="server"> <title>根据IP地址获取所在城市</title> <scriptsrc="?format=js"type="text/ecmascript"></script> <script type="text/jav

获取ip,判断用户所在城市

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_Us

iOS 系统地图 获取当前城市

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { //此处locations存储了持续更新的位置坐标值,取最后一个值为最新位置,如果不想让其持续更新位置,则在此方法中获取到一个值之后让locationManager stopUpdatingLocation CLLocation *currentLocation = [locations lastObject]