ios系统定位

前期准备

系统定位功能,需要用到框架:CoreLocation/CoreLocation.h, 然后导入文件#import <CoreLocation/CoreLocation.h>

注意使用定位功能的位置,需要设置delegate,CLLocationManagerDelegate

实现代码

//属性
@property (strong, nonatomic) CLLocationManager* locationManager; //实现
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. [self locate];
} #pragma mark- Private method
//开始定位
- (void)locate
{
// 判断定位操作是否被允许
if([CLLocationManager locationServicesEnabled]) {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;//代理
self.locationManager.distanceFilter = 1000.0f;// 多少距离更新一次
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;//精确度
//如果是ios8设备,需要配置文件,看后面。
if ([[[UIDevice currentDevice] systemVersion] doubleValue] > 8.0) {
//设置定位权限 仅ios8有意义
[self.locationManager requestWhenInUseAuthorization];// 前台定位
// [locationManager requestAlwaysAuthorization];// 前后台同时定位
}
// 开始定位
[self.locationManager startUpdatingLocation];
}else{
//提示用户无法进行定位操作
NSLog(@"无法定位");
}
} #pragma mark - CoreLocation Delegate -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
//此处locations存储了持续更新的位置坐标值,取最后一个值为最新位置,如果不想让其持续更新位置,则在此方法中获取到一个值之后topUpdatingLocation
CLLocation *currentLocation = [locations lastObject]; // 获取当前所在的城市名
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
//根据经纬度反向地理编译出地址信息
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *array, NSError *error)
{
if (array.count > 0){
CLPlacemark *placemark = [array objectAtIndex:0];
//获取位置信息
NSLog(@"%@",placemark.name);
//NSLog(@"thoroughfare,%@",placemark.thoroughfare); //街道 //NSLog(@"subThoroughfare,%@",placemark.subThoroughfare); //子街道
//NSLog(@"locality,%@",placemark.locality); // 市
//NSLog(@"subLocality,%@",placemark.subLocality);// 区
//NSLog(@"country,%@",placemark.country);// 国家
//获取城市
NSString *city = placemark.locality;
if (!city) {
//四大直辖市的城市信息无法通过locality获得,只能通过获取省份的方法来获得(如果city为空,则可知为直辖市)
city = placemark.administrativeArea;
}
}
else if (error == nil && [array count] == 0){
NSLog(@"No results were returned.");
}
else if (error != nil){
NSLog(@"An error occurred = %@", error);
}
}]; //系统会一直更新数据,直到选择停止更新,因为我们只需要获得一次经纬度即可,所以获取之后就停止更新
[manager stopUpdatingLocation];
} - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"定位失败:error: %@", error);
} @end

ios8代理解决问题

详情: http://www.cnblogs.com/peer/archive/2011/05/12/2044122.html

-

这是因为xcode升级造成的定位权限设置问题。

升级xcode6以后打开以前xcode5工程,程序不能定位。工程升级到xcode6编译时需要iOS8 要自己写授权,不然没权限定位。

解决方法: 首先在 info.plist里加入对应的缺省字段 ,值设置为YES(前台定位写上边字段,前后台定位写下边字段)

NSLocationWhenInUseUsageDescription //允许在前台获取GPS的描述

NSLocationAlwaysUsageDescription //允许在前、后台获取GPS的描述

  • 后方附图

iOS-系统定位功能的更多相关文章

  1. iOS 设备定位功能可用的判断

    if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] ...

  2. iOS - (利用/调用系统定位获取当前经纬度与地理信息)

    这些天做iOS项目的时候,需要通过定位来拿到当期城市的名称.百度地图SDK有这个功能,但为了不依赖第三方,这里使用iOS自带框架CoreLocation来实现这个需求.iOS8出来之后,针对定位需要多 ...

  3. Flex AIR应用GPS定位功能(Android和IOS)

    说明: 使用AIR进行GPS定位功能实现时,会经常判断GPS是否打开.一般的官方或者书上的介绍的方法,测试后,只能对Android系统进行判断,而对ios系统则无法进行判断. 经过研究测试,终于解决实 ...

  4. 有关iOS系统中调用相机设备实现二维码扫描功能的注意点(3/3)

    今天我们接着聊聊iOS系统实现二维码扫描的其他注意点. 大家还记得前面我们用到的输出数据的类对象吗?AVCaptureMetadataOutput,就是它!如果我们需要实现目前主流APP扫描二维码的功 ...

  5. iOS定位功能

    1.实现定位功能需要导入系统库MapKit.framework 2.在iPhone手机上默认是禁止手机定位的,所以,要询问系统是否开启手机定位功能. 为了开启手机定位功能,还需在info.plist中 ...

  6. iOS各框架功能简述以及系统层次结构简单分析

    iOS各个框架所对应的功能简单介绍 iOS系统结构层次:

  7. ios开发之 -- 调用系统定位获取当前经纬度与地理信息

    ios 10定位: 在info.plist中加入: //允许在前台使用时获取GPS的描述 定位权限:Privacy - Location When In Use Usage Description / ...

  8. 检测iOS系统的定位服务

    [CLLocationManager locationServicesEnabled]检测的是整个iOS系统的位置服务开关

  9. ios中关于系统定位CLLocationManager的使用解析

    //1.添加定位管理委托协议 CLLocationManagerDelegate //2.初始化定位管理对象 self.locationManager=[[CLLocationManager allo ...

随机推荐

  1. ServletContext与application的关系

    ServletContext 就是application 生命周期是从servletContext创建到服务器关闭 其实servletContext和application 是一样的,就相当于一个类创 ...

  2. http知识累积

    1. http头 Host, Host请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的. 如果有黑客劫持了用户的请求,篡改了Host的内容,当请求到 ...

  3. [BZOJ 2049] [Sdoi2008] Cave 洞穴勘测 【LCT】

    题目链接:BZOJ - 2049 题目分析 LCT的基本模型,包括 Link ,Cut 操作和判断两个点是否在同一棵树内. Link(x, y) : Make_Root(x); Splay(x); F ...

  4. NEURAL NETWORKS, PART 3: THE NETWORK

    NEURAL NETWORKS, PART 3: THE NETWORK We have learned about individual neurons in the previous sectio ...

  5. Hibernate 使用HQL的 in 时要注意判断in的值(list)是否包含数据

    如果你使用 HQL的 in,例如: sessionFactory.getCurrentSession() .createQuery("select hlInfo.id, count(id) ...

  6. LeetCode_3 sum closet

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...

  7. Mongo的导出工具mongoexport介绍

    需求介绍:将mongodb中的数据以文件的方式导出:json或cvs格式 mongo 提供了mongoexport的工具,可以实现将库中的数据以json或cvs的格式输出到文件中.mongoexpor ...

  8. 创建range分区

    drop table T_PM_ACCT_DTL_AF_TEST; create table T_PM_ACCT_DTL_AF_TEST  (    DATA_DATE     date,    AC ...

  9. WordPress特制字符串URL重定向限制绕过漏洞

    漏洞版本: WordPress 3.6 漏洞描述: Bugtraq ID:62344 CVE ID:CVE-2013-4339 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PH ...

  10. Linux Shell编程(28)——进程替换

    进程替换与命令替换很相似. 命令替换把一个命令的结果赋给一个变量,例如 dir_contents=`ls -al`或xref=$. 进程替换则是把一个进程的输出回馈给另一个进程 (换句话说,它把一个命 ...