iPhone - 我如何获得基于学位的定位方向

时间:2012-07-24 05:08:48

标签: iphone ios cllocationmanager

首先,我在班级中实现了位置管理器功能,并且whict工作正常,并为我提供了当前位置。从那个位置,我得到了如何从here获得位置学位。但我也无法得到方向(即北,南,东,西),我也提到this。我希望我所获得的位置以度数格式显示,如this。即位置经理给我+ 37.33019332,-122.02298792,我想要像37°19'49“ N ,-122°1'23” E 。我得到的所有东西只是不知道如何得到最后的“N”和“E”。 如果我使用CLLocation.course,我就会得到我的指导课程。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:4)

这实际上非常简单。纬度从赤道0°开始,北极为90.0,南极为-90.0。基本上,如果纬度在0到90之间,那么你在北半球和南半球的纬度在0到-90之间。

经度基本上以同样的方式运作。 0°指的是本初子午线,它是贯穿格林威治,英格兰和非洲一部分的虚线。正经度高达180°指的是本初子午线以东的位置,负经度指的是本初子午线以西的地区,最高可达180°。

答案 1 :(得分:2)

使用此代码并将CLLocationManagerDelegate放在.h文件

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{             
    updatedHeading = newHeading.magneticHeading;
    float headingFloat = 0 - newHeading.magneticHeading;

    rotateImg.transform = CGAffineTransformMakeRotation(headingFloat*radianConst);    
    float value = updatedHeading;
    if(value >= 0 && value < 23)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° N",value];
    }
    else if(value >=23 && value < 68)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° NE",value];
    }
    else if(value >=68 && value < 113)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° E",value];
    }
    else if(value >=113 && value < 185)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° SE",value];
    }
    else if(value >=185 && value < 203)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° S",value];
    }
    else if(value >=203 && value < 249)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° SE",value];
    }
    else if(value >=249 && value < 293)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° W",value];
    }
    else if(value >=293 && value < 350)
    {
        compassFault.text = [NSString stringWithFormat:@"%f° NW",value];
    }
  }