美文网首页
定位及耗电

定位及耗电

作者: E度丶塔罗 | 来源:发表于2017-11-26 11:56 被阅读232次

    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类型别名  
    

    相关文章

      网友评论

          本文标题:定位及耗电

          本文链接:https://www.haomeiwen.com/subject/bkjkbxtx.html