获取当前位置(Core Location)

原创 2015年07月10日 09:25:04

Core Location框架提供了三种用于追踪设备当前位置的服务,Core Location框架从内置的蜂窝,Wi-Fi或者GPS来获取位置

  •  

    The significant-change location 

    service 提供了低耗电的方法来获取当前位置,当前位置改变时会发出通知
  • The standard location service 提供了一种可设置的方法来获取当前位置

  • Region monitoring 监视特定地区的跨越

如果程序必须使用位置服务
在程序的info.plist中添加UIRequiredDeviceCapabilities键,它是一个包含多个字符串的数组,然后添加location-services,gps字符串


1.The Standard Location Service 

[plain]
  1. Listing 1-1  Starting the standard location service  
  2. - (void)startStandardUpdates  
  3. {  
  4.     // 创建location manager  
  5.     if (nil == locationManager)  
  6.         locationManager = [[CLLocationManager alloc] init];  
  7.    
  8.     locationManager.delegate = self; 
[plain]
  1. <span style="font-size:16px;">  // 设置获取位置的精确度,越精确越耗电</span>  
[plain]
  1. <span style="font-size:16px;">    locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;  
  2.    
  3.     // 设置距离过滤器,超过次距离就更新一次位置  
  4.     locationManager.distanceFilter = 500;  
  5.    
  6.     [locationManager startUpdatingLocation];  
  7. }</span>  
使用location manager之前一般要检查位置服务是否可用,
[plain]
  1. <span style="font-size:16px;">+ (BOOL)locationServicesEnabled</span>  

当位置信息更新时,会给location manager发送消息

2.Significant-Change Location Service

[plain]
  1. <span style="font-size:16px;">- (void)startSignificantChangeUpdates  
  2. {  
  3.     // Create the location manager if this object does not  
  4.     // already have one.  
  5.     if (nil == locationManager)  
  6.         locationManager = [[CLLocationManager alloc] init];  
  7.    
  8.     locationManager.delegate = self;  
  9.     [locationManager startMonitoringSignificantLocationChanges];  
  10. }</span>  
可以叫醒在后台的程序


3.Region monitoring Service
使用之前调用CLLocationManager的regionMonitoringAvailable and regionMonitoringEnabled

[plain]
  1. <span style="font-size:16px;">- (BOOL)registerRegionWithCircularOverlay:(MyCircle*)overlay andIdentifier:(NSString*)identifier  
  2. {  
  3.    // Do not create regions if support is unavailable or disabled.  
  4.    if ( ![CLLocationManager regionMonitoringAvailable] ||  
  5.         ![CLLocationManager regionMonitoringEnabled] )  
  6.       return NO;  
  7.   
  8.    // If the radius is too large, registration fails automatically,  
  9.    // so clamp the radius to the max value.  
  10.    CLLocationDegrees radius = overlay.radius;  
  11.    if (radius > self.locationManager.maximumRegionMonitoringDistance)  
  12.       radius = self.locationManager.maximumRegionMonitoringDistance;  
  13.   
  14.    // Create the region and start monitoring it.  
  15.    CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:overlay.coordinate  
  16.                         radius:radius identifier:identifier];  
  17.    [self.locationManager startMonitoringForRegion:region  
  18.                     desiredAccuracy:kCLLocationAccuracyHundredMeters];  
  19.   
  20.    [region release];  
  21.    return YES;  
  22. }</span>  
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 通过network gps获取当前位置的location信息

这个工程演示了如何能够获取当前位置的经纬度(为使用google地图) 但是如果用户在设置中未开启通过gps获取位置 则获取到的location为空 考虑到许多用户不是2.2+的版本 所以在...

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索。该篇讲述定位当前自己的...

Angular 通过注入 $location 获取与修改当前页面URL

Angular 通过注入 $location 获取与修改当前页面URL

【JavaScript】获取当前页的URL与window.location.href

利用Javascript获取当前页的URL,这个问题起来好像很复杂,如果第一次去想这个问题,很多人估计又在琢磨到底又是哪个神一般的Javascript函数。 其实不是,Javascript获取当前页...

Angular 通过注入 $location 获取与修改当前页面URL

以下获取与修改的 URL 以 ( http://172.16.0.88:8100/#/homePage?id=10&a=100 ) 为例【一】获取 (不修改URL)[javascript] vie...

android:GPS获取location经纬度并用谷歌解析为地理位置名称

实现的功能:先获取本地的经纬度,再根据经纬度,请求googleapis来解析地理位置名称。 下面的例子,能够跑起来,亲测。 多说无益,看码。 首先搞一个布局,其实就是一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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