美文网首页
iOS开发之CoreLocaiton框架使用(指南针)

iOS开发之CoreLocaiton框架使用(指南针)

作者: 锈色的栅栏 | 来源:发表于2016-07-30 10:47 被阅读167次

    一、实现原理:

    1.通过传感器,获取设备朝向
    2.根据设备朝向反向旋转"指南针"图片

    二、磁北角度  真北角度:


    磁北(magnetic north)是指南针所指示的北,这主要是由于地球的磁场两极与地理上的南北两极不重合,因此指南针指示的北为磁北而非真北,磁北会随着时间而变化。

    真北(True North, TN)是大家看地图或者地球仪上所有经线的起始点,也叫地理北极。真正的北极点很难测量,要用到卫星,所以我们在日常生活中地图中用到的只是磁北。

    磁北角度  真北角度

    三、实例代码

    1.准备一张指南针的图片(下面图片可以使用)


    指南针

    2.导入CoreLocation框架以及对应的主头文件并且设置代理

    3.懒加载创建CLLocationManager对象并设置代理

    - (CLLocationManager *)lM

    {

    if (!_lM) {

    _lM = [[CLLocationManager alloc] init];

    _lM.delegate = self;

    // 每隔多少度更新一次

    _lM.headingFilter = 2;

    }
    return _lM;
    }

    4. 调用方法, 开始获取设备朝向  

    [self.locationMstartUpdatingHeading];

    5. 在对应的代理方法中获取设备朝向信息

    #pragma mark - CLLocationManagerDelegate
    /**

    *  获取到手机朝向时调用
    *
    *  @param manager    位置管理者
    *  @param newHeading 朝向对象
    */

    -(void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

    {
    /**
    *  CLHeading
    *  magneticHeading : 磁北角度
    *  trueHeading : 真北角度
    */

    NSLog(@"%f", newHeading.magneticHeading);

    CGFloat angle = newHeading.magneticHeading;

    // 把角度转弧度
    CGFloat angleR = angle / 180.0 * M_PI;

    // 旋转图片
    [UIView animateWithDuration:0.25 animations:^{
    self.compassView.transform = CGAffineTransformMakeRotation(-angleR);
    }];
    }

    相关文章

      网友评论

          本文标题:iOS开发之CoreLocaiton框架使用(指南针)

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