定位及耗电

iOS-GPS定位基础知识

iOS -GPS定位服务和地图应用是两套完全不同的API

iOS7 的四种定位服务
-GPS卫星 优点最为准确,缺点 耗电量大,不能遮挡(建筑物内不行)
-WI-FI通过WIFI路由器定位 优点比较省电,经济实惠
-蜂窝式移动电话基站。通过移动运营商基站定位 误差比较大
-iBeacon微定位。 苹果公司自己研发的iBeacon,使用低功耗的蓝牙。
iOS 定位服务开发不需要指定定位途径(除了微定位外)ios 会根据设备的情况采用最佳方案,如果能接受GPS优先采用GPS定位,次之是Wi-Fi ,最后是蜂窝式基站定位;

iOS 7 定位服务使用Core Location框架

CLLocationManager 用于定位管理的类,他提供位置信息和高度信息,也可以监控设备进入或者离开某个区域,还可以获得设备的运行方向;
CLLocationManagerDelegate。CLLocationManager类的委托协议;
CLLocation 封装了位置和高度信息;
第一次请求定位信息时,系统会提示用户是否允许开启定位服务。

{  
    [super viewDidLoad];  
    locationManager = [[CLLocationManager alloc]init];  
    locationManager.delegate = self;  
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;  
    locationManager.distanceFilter = 1000.f;  
}

初始化一个定位管理器设置好代理
desireAccuracy这个属性用来设置经度的:

kCLLocationAccuracyBest; 电池供电的最高精度  
kCLLocationAccuracyNearestTenMeters; 精确到10米  
kCLLocationAccuracyHundredMeters;精确到100米  
kCLLocationAccuracyKilometer;精确到1000米  
kCLLocationAccuracyThreeKilometers;精确到3000米

经度越高获得信息时间越短。耗电越多。
distabceFilter 属性定义了设备移动后获得位置信息的最小距离,单位是米;
设置距离筛选器distanceFilter,表示设备至少移动1000米,才通知委托更新
在视图展现的时候分别开启和关闭定位服务

- (void)viewWillAppear:(BOOL)animated  
{  
    [super viewWillAppear:animated];  
    [locationManager startUpdatingLocation];  
}  
- (void)viewWillDisappear:(BOOL)animated  
{  
    [super viewWillDisappear:animated];  
    [locationManager stopUpdatingLocation];  
} 

当获取位置成功的时候进行调用代理来获取数据

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations  
{  
    CLLocation * currentLocation = [locations lastObject];  
    double  altitude = currentLocation.altitude;//高度  
    double  latitude = currentLocation.coordinate.latitude;  
    double  longitude = currentLocation.coordinate.longitude;  
} 

代理中得lication是位置数据数组,最后一个是当前位置 ;

cllocation类

初始化函数  
  
– initWithLatitude:longitude:  
– initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp:  
– initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:course:speed:timestamp:  
属性:  
   coordinate  property             地理坐标  
   altitude  property               高度  
   horizontalAccuracy  property     地图中显示圆的半径  
   verticalAccuracy  property       垂直高度的精确度  
   timestamp  property              位置确定的时间  
– distanceFromLocation:   指定位置到当前位置的距离  
   speed  property              运动的速度  
   course  property         设备的方向  
CLLocation 封装了位置、高度等信息    
    altitude是高度值 coordinate是封装的经纬度的结构体 CLLocationCoordinate2D  
    typedef struct {  
    CLLocationDegrees latitude;     //经度  
    CLLocationDegrees longitude;    //纬度  
    } CLLocationCoordinate2D;  
      
    CLLocationDegrees 是double类型别名  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS 自带定位服务(原创) ps:本文粘贴自别处,只为学习记录~ 定位服务 iOS 7 提供了4种不同的途径进行...
    西门淋雨阅读 5,993评论 0 3
  • 今天来总结一下苹果原生的地图和现在各种流行的集成地图! 1.基础知识 a.经纬度 经纬度是经度与纬度的合称组成一个...
    马小悦阅读 927评论 1 0
  • 一、常见定位技术 1.基站定位 每个手机基站都有一个ID标识符,插上sim卡的手机或其他终端可以搜集周围所有收到信...
    IvanHung阅读 25,574评论 4 15
  • 简介 在移动互联网时代,移动app能解决用户的很多生活琐事,比如 周边:找餐馆、找KTV、找电影院等等 导航:根据...
    JonesCxy阅读 1,280评论 1 1
  • 朋友说 哎呀,你不是会画水彩么 给我画个花儿吧 耽误不了多久 ( ̀⌄ ́)好吧,横竖都要画 索性也拍个过程图 透...
    吸妖杨梅阅读 417评论 4 6