1、//新的方法。登陆成功之后(旧的方法就无论了)

- (void)locationManager:(CLLocationManager *)manager

     didUpdateLocations:(NSArray<CLLocation *> *)locations

//locationManager:didUpdateLocations:(调用非常频繁)

//更新位置的方法之后就调用这种方法,数组中是依照时间的先后顺序,即为将旧的和新的位置放在数组中



2、//与之相应的 登陆失败之后的调用。定位失败了之后

- (void)locationManager:(CLLocationManager *)manager

    didFailWithError:(NSError *)error;



问题1、

发现有的时候更新位置的时候我们停止了对应的更新方法,可是还是打印出两个或者三个更行的位置。

2015-08-14 17:23:09.285 mylocation[450:209668]  location is :<+22.52849988,+113.93162929> +/- 65.00m (speed -1.00 mps / course -1.00) @ 15/8/14 中国标准时间下午5:23:08

2015-08-14 17:23:09.285 mylocation[450:209668]  location is :<+22.52849988,+113.93162929> +/- 65.00m (speed -1.00 mps / course -1.00) @ 15/8/14 中国标准时间下午5:23:08

更新的代码为:

#pragma mark CLLocationManagerDelegate

//定位成功

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

{

    CLLocation *location  = [locations lastObject];

    NSLog(@" location is :%@ ",location.description);

    [self.locationManager stopUpdatingLocation];

}

那是由于,我们将    [self.locationManager stopUpdatingLocation];放在了输出对应的信息之后。当我们停止定位的时候须要一定的时间,这段时间内系统又又一次定位了一次或则多次,所以应该停止定位之后再输出,这样就能够仅仅是输出当前的一次更新信息。

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

{

    [self.locationManager stopUpdatingLocation];//先停止定位



    CLLocation *location  = [locations lastObject];

    NSLog(@" location is :%@ ",location.description);

}



问题2、用模拟器定位失败

2015-08-14 17:17:17.455 mylocation[2953:98656]  Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"

//定位失败之后显示的信息。

解决方法:

1.确定模拟器(手机)已经联网而且同意程序获取地理位置

2.重置地理位置服务或者网络服务

PS:假设是模拟器就果断直接重置模拟器吧  IOS Simulator - Reset Content and Settings..。

这样就又一次设置模拟器。模拟器就是初始化的状态。



//方向的更新

- (void)locationManager:(CLLocationManager *)manager

       didUpdateHeading:(CLHeading *)newHeading;



//用于推断是否显示方向的校对,返回yes的时候,将会校对正确之后才会停止,或者dismissheadingcalibrationdisplay方法解除。

- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager;  





- (void)locationManager:(CLLocationManager *)manager

    didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region;



- (void)locationManager:(CLLocationManager *)manager

        didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region;



- (void)locationManager:(CLLocationManager *)manager

    rangingBeaconsDidFailForRegion:(CLBeaconRegion *)region

    withError:(NSError *)error ;



//进入指定区域

- (void)locationManager:(CLLocationManager *)manager

    didEnterRegion:(CLRegion *)region ;



//离开指定的区域

- (void)locationManager:(CLLocationManager *)manager

    didExitRegion:(CLRegion *)region;



//定位失败

- (void)locationManager:(CLLocationManager *)manager

    didFailWithError:(NSError *)error;



//区域定位失败

- (void)locationManager:(CLLocationManager *)manager

    monitoringDidFailForRegion:(CLRegion *)region

    withError:(NSError *)error ;



//改变里授权的状态

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status ;



//開始控制指定的区域

- (void)locationManager:(CLLocationManager *)manager

    didStartMonitoringForRegion:(CLRegion *)region;



//已经停止位置的更更新

- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager ;



//位置定位又一次開始定位位置的更新

- (void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager ;



//已经完毕了推迟的更新

- (void)locationManager:(CLLocationManager *)manager

    didFinishDeferredUpdatesWithError:(NSError *)error;



//就是已经訪问过的位置,就会调用这个表示已经訪问过。这个在栅栏或者定位区域都是使用到的

- (void)locationManager:(CLLocationManager *)manager didVisit:(CLVisit *)visit;



@end

写的时候easy遗漏的就是设置代理:

Assigning to 'id<CLLocationManagerDelegate>' from incompatible type 'ViewController *const __strong'

出现这个错误:

是由于有的时候还没有继承对应的代理。

easy错误的地方:

  1. 一些差别:能够通过配置NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription来告诉用户使用定位服务的目的。这个设置的信息是在用户第一次打开应用的app的时候,会弹出的信息显示
  2. 可是不同的是这个配置是必须的,假设不进行配置则默认情况下应用无法使用定位服务。打开应用不会给出打开定位服务的提示,也无法获取到位置信息,除非安装后自己设置此应用的定位服务。同一时候,在应用程序中须要依据配置对requestAlwaysAuthorization或requestWhenInUseAuthorization方法进行请求。

    </p><p>开发人员能够在info.plist 文件里设置NSLocationUsageDescription 说明定位identifier目的

  3. [Privacy -Location Usage Description]  这个在ios8能够不写
  4. //这是用户的描写叙述,在ios8之前写的。

CLLocationManagerDelegate的解说的更多相关文章

  1. 框架设计之ADO.NET Command的ExecuteScalar误用情景及底层解说

    最近下载了点资料,学了学Android,发现Android入门还算简单,从.NET过渡到Android,也就三七十一天的事. 大伙有空也可以学学... 好了,言归正文,那日,有网友发了一个他们公司的数 ...

  2. 【开源】OSharp框架解说系列(1):总体设计及系列导航

    系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...

  3. 【开源】OSharp3.3框架解说系列:开发计划与进度

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  4. 【开源】OSharp3.3框架解说系列(7.1):初始化流程概述

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  5. 【开源】OSharp3.3框架解说系列:重新开源及3.3版本新特性

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  6. 【开源】OSharp3.0框架解说系列(6.2):操作日志与数据日志

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  7. 【开源】OSharp3.0框架解说系列:新版本说明及新功能规划预览

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  8. 【开源】OSharp框架解说系列(6.1):日志系统设计

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  9. 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

随机推荐

  1. Sequence(优先队列)

    http://poj.org/problem?id=2442 题意:给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列, 让你求出序列和最小的前n个序列的序列和. # ...

  2. [Apple开发者帐户帮助]六、配置应用服务(2)创建DeviceCheck私钥

    要验证与DeviceCheck服务的通信,您将使用启用了DeviceCheck的私钥. 首先创建并下载启用了DeviceCheck 的私钥.然后获取密钥标识符(kid)以创建JSON Web令牌(JW ...

  3. 「LOJ10150」括号配对

    [题目] Hecy 又接了个新任务:BE 处理.BE 中有一类被称为 GBE. 以下是 GBE 的定义: 空表达式是 GBE 如果表达式 A 是 GBE,则 [A] 与 (A) 都是 GBE 如果 A ...

  4. B - Double Cola

    Problem description Sheldon, Leonard, Penny, Rajesh and Howard are in the queue for a "Double C ...

  5. Coursera公开课-Machine_learing:编程作业6

    Support Vector Machines I have some issues to state. First, there were some bugs in original code wh ...

  6. Vue跨域访问,axios&cors

    先安装node.js和npm,这个不用说了,直接在创建vue项目,然后实践一下跨域访问. 如果npm安装较慢,可安装淘宝镜像,执行下面命令: npm install -g cnpm --registr ...

  7. 自学Python七 爬虫实战一

    此文承接上文,让我们写一个简简单单的爬虫,循序而渐进不是吗?此次进行的练习是爬取前5页什么值得买网站中的白菜价包邮信息.包括名称,价格,推荐人,时间. 我们所需要做的工作:1.确定URL并获得页面代码 ...

  8. 【Android】实例 忐忑的精灵

    在Android Studio中创建项目,名称为“Animation And Multimedia”,然后在该项目中创建一个Module,名称为“Frame-By-Frame Animation”.在 ...

  9. php判断方法及区别

    php判断方法 ‘is_类型名称’    php判断方法 $x="1"; echo gettype(is_string($x)); isset    是否存在 empty   是否 ...

  10. jstl与el结合常见用法

    JSTL Functions标签库 在JSP文件中使用Functions标签库,要先通过taglib指令引入该标签库: <%@taglib uri=”http://java.sun.com/js ...