CLLocationManager 를 이용한 간단한 위치정보 사용 코드를 구현해보자.

CLLocationManager 클래스는 CoreLocation.framework 에 포함되어 있다.

.h 파일
 

@property (nonatomic, retain) CLLocationManager *locationManager;  // 위치 정보를 관리할 매니저 객체
 
 .m 파일
 

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (locationManager == nil) {
        locationManager= [[CLLocationManager alloc] init];
    }
    locationManager.delegate= self; // 델리게이트 연결
}

// 위치 정보 갱신을 시작
- (void) startUpdateLocation {
    NSLog(@"Location update start");

    if (locationManager == nil) {
        locationManager= [[CLLocationManager alloc] init];
    }

    locationManager.desiredAccuracy= kCLLocationAccuracyBest; // 정밀도 옵션을 선택해준다. (종류는 아래 참조)
    [locationManager startUpdatingLocation];
}

// 위치 정보 갱신을 종료 
- (void) stopUpdateLocation {
    NSLog(@"Location update stop");

    [locationManager stopUpdatingLocation];
}
 
#pragma mark - CLLocationManagerDelegate
 
// 위치 정보가 갱신될때 받는 델리게이트.
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog(@"Location is changed");

    NSLog(@"Altitude : %f", newLocation.altitude);
    NSLog(@"Latitude : %f", newLocation.coordinate.latitude);
    NSLog(@"Longitude : %f", newLocation.coordinate.longitude);
}


desiredAccuracy 는 센서의 정밀도를 설정하고, 아래와 같은 종류가 있다. 


● kCLLocationAccuracyBestForNavigation;

● kCLLocationAccuracyBest;

● kCLLocationAccuracyNearestTenMeters;

● kCLLocationAccuracyHundredMeters;

● kCLLocationAccuracyKilometer;

● kCLLocationAccuracyThreeKilometers;


정밀도가 올라갈 수록 베터리 소모가 심해지니 필요에 따라 사용하면 된다.

반응형