Interesting/iPhone | Posted by hyena0 2010. 7. 31. 23:52

[iPhone] Compass 구현하기



iPhone 에서 나침반을 구현하려고

할 때, 아래와 같은 작업을 수행하면 됩니다.

사용하고자 하는 클래스에서

CLLocationManagerDelegate의 프로토콜

사용을 선언합니다.

CLLocationManagerDelegate 에는 다음의 

메소드가 있습니다. 

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


이 메소드를 구현해 주고,  CLLocationManager에서 startUpdatingHeading를 실행시켜주면

구현된 위의 메소드를 실행해서 Heading값을 가져오게 됩니다.

아래는 간단히 예제를 정리해 봅니다.

* header file

#import <XX.h>

#import <XXX.h>

@interface 클래스명 : 슈퍼클래스명 <CLLocationManagerDelegate>{


   .....내용..... 


}


* implementation file 
....

- (void)viewDidLoad { //viewcontroller 라고 가정

        CLLocationManager *locationManager=[[CLLocationManager alloc] init];

locationManager.delegate=self;

locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;

 

[locationManager startUpdatingHeading];//heading값 호출 시작


.....내용.....


}
....

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

headingData = newHeading.magneticHeading;//heading 값 중 자기장 값 가져오기

NSLog(@"Magnetic heading value : %f", headingData);//로그로 확인


        ...기타 추가 구현....


}


위와 같이 구현하면 headingData 에서 나침반의 각도값을 가져올 수 있습니다.