1.倒入头文件

#import <CoreLocation/CoreLocation.h>

2.实现定位协议CLLocationManagerDelegate

3.定义定位属性

@property(nonatomic,retain)CLLocationManager *locationManager;

4.開始定位

- (void)locate

{

//
推断定位操作是否被同意

if([CLLocationManager
locationServicesEnabled]) {

self.locationManager = [[CLLocationManager
alloc] init] ;

self.locationManager.delegate
= self;

}else {

//提示用户无法进行定位操作

UIAlertView *alertView = [[UIAlertView
alloc]initWithTitle:

@"提示"
message:@"定位不成功 ,请确认开启定位"
delegate:nil
cancelButtonTitle:@"取消"
otherButtonTitles:@"确定",
nil];

[alertView
show];

}

//
開始定位

[self.locationManager
startUpdatingLocation];

}


5.实现定位协议回调方法

#pragma mark - CoreLocation Delegate

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray
*)locations

{

//此处locations存储了持续更新的位置坐标值,取最后一个值为最新位置,假设不想让其持续更新位置,则在此方法中获取到一个值之后让locationManager stopUpdatingLocation

CLLocation *currentLocation = [locations
lastObject];

//
获取当前所在的城市名

CLGeocoder *geocoder = [[CLGeocoder
alloc] init];

//依据经纬度反向地理编译出地址信息

[geocoder
reverseGeocodeLocation:currentLocation
completionHandler:^(NSArray *array,
NSError *error)

{

if (array.count >
)

{

CLPlacemark *placemark = [array
objectAtIndex:];

//将获得的全部信息显示到label上

NSLog(@"%@",placemark.name);

//获取城市

NSString *city = placemark.locality;

if (!city) {

//四大直辖市的城市信息无法通过locality获得,仅仅能通过获取省份的方法来获得(假设city为空,则可知为直辖市)

city = placemark.administrativeArea;

}

self.cityName = city;

}

else if (error ==
nil && [array count] ==
)

{

NSLog(@"No results were returned.");

}

else if (error !=
nil)

{

NSLog(@"An error occurred = %@", error);

}

}];

//系统会一直更新数据。直到选择停止更新。由于我们仅仅须要获得一次经纬度就可以,所以获取之后就停止更新

[manager stopUpdatingLocation];

}

- (void)locationManager:(CLLocationManager *)manager

didFailWithError:(NSError *)error {

if (error.code ==
kCLErrorDenied) {

//
提示用户出错原因。可按住Option键点击 KCLErrorDenied的查看很多其它出错信息,可打印error.code值查找原因所在

}

}


iOS获取当前城市的更多相关文章

  1. iOS 获取当前城市

    1.倒入头文件 #import <CoreLocation/CoreLocation.h> 2.实现定位协议CLLocationManagerDelegate 3.定义定位属性  @pro ...

  2. ios 获取通讯录的所有信息

    iOS获取通讯录全部信息 ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef results = ABAddressBoo ...

  3. iOS获取设备唯一标识的8种方法

    8种iOS获取设备唯一标识的方法,希望对大家有用. UDID UDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可 ...

  4. iOS 获取文件的目录路径的几种方法 [转]

    iOS 获取文件的目录路径的几种方法 2 years ago davidzhang iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么. d ...

  5. iOS获取设备型号、装置类型等信息

    iOS获取设备型号.设备类型等信息 设备标识 关于设备标识,历史上盛行过很多英雄,比如UDID.Mac地址.OpenUDID等,然而他们都陆陆续续倒在了苹果的门下.苹果目前提供了2个方法供App获取设 ...

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

    百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsC ...

  7. Swift3.0 iOS获取当前时间 - 年月日时分秒星期

    Swift3.0 iOS获取当前时间 - 年月日时分秒星期func getTimes() -> [Int] { var timers: [Int] = [] // 返回的数组 let calen ...

  8. IOS 获取最新设备型号方法

    1.IOS 获取最新设备型号方法列表最新对照表:http://theiphonewiki.com/wiki/Models方法: #import "sys/utsname.h” struct ...

  9. iOS获取汉字的拼音

    在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,利用查表的方法是先,并且代码量 ...

随机推荐

  1. IEnumerable 与 IEnumerable<T>

    转自:https://blog.csdn.net/qq_21419015/article/details/80495322 IEnumerable 和IEnumerable<T> 接口在 ...

  2. Fire! -两次dfs

    题目描述: Joe works in a maze. Unfortunately, portions of the maze have caught on fire, and the owner of ...

  3. Philosopher’s Walk(递归)

    In Programming Land, there are several pathways called Philosopher’s Walks for philosophers to have ...

  4. jupyter notebook不能选择虚拟环境的解决方法

    今天使用dlib没有py37版本,因此创建了Version_36虚拟环境.但jupyter notebook默认的内核找不到新建的虚拟环境,解决方法是需要安装两个包: × ipykernel × nb ...

  5. sqlserver日志文件

    过程:   昨天下午数据库奔溃,表现就是连不上数据库了,重启服务之后好了. 查询日文文件 , “Autogrow of file 'XX_log' in database 'XX' was cance ...

  6. springboot整合视图层之Thymeleaf

    Thymeleaf中有自己的表达式,和自己的语法,可以把数据取出来后再进行判断,遍历等操作,另外它还封装了strings,dates....对象,可以利用这些对象对已有的数据进行简单的逻辑处理: 1. ...

  7. sudo passwd root输入普通用户密码后显示用户不再sudoers文件中

    在写上一篇VirtualBox创建共享文件夹的时候,在运行下图授权时,root密码一直输入错误 然后我就在终端输入 su root,却发现需要密码,但我却不知道密码是什么 于是我就在终端输入如下命令, ...

  8. MySQL Unable to convert MySQL datetime value to System.DateTime 解决方案

    Unable to convert MySQL date/time value to System.DateTime 解决方案 这个问题发生在MySQL数据里面有Date类型数据,在C#中查询出来时候 ...

  9. 1038. Jewels And Stones

    描述 给定字符串J代表是珠宝的石头类型,而S代表你拥有的石头.S中的每个字符都是你拥有的一个石头. 你想知道你的石头有多少是珠宝. J中的字母一定不同,J和S中的字符都是字母. 字母区分大小写,因此& ...

  10. Redis自学笔记:3.5入门-集合类型

    3.5集合类型 3.5.1介绍 在集合中的每个元素都是不同的,且没有顺序 表3-4集合类型和列表类型的对比 - 集合类型 列表类型 存储内容 至多232-1个字符串 至多232-1个字符串 有序性 否 ...