CLOSE SEARCH
POSTS TAGGED WITH: CoreLocation

위치, 방향 그리고 CoreLocation

CoreLocation 프레임워크는 현재 위치에 대한 정보를 제공해준다. 그 중에서도 중요한 역활을 하는 CLLocationManager 클래스는 iOS 2.0 이상의 디바이스에서 현재 위치와 방향에 대한 이벤트를 제공하고 관련 작업을 지원해 주는 클래스이다. 주요 기능들을 살펴보면

  • 정확도를 지정하여 사용자의 현재 위치 변화를 추적할 수 있다.
  • 디바이스에 내장된 나침반을 통해 방향의 변화를 감지하고 해당 정보를 얻어올 수 있다.
  • 사용자가 특정 지역으로 들어가거나 나오는 상황을 감지할 수 있다.

일부 정보의 경우 디바이스에 해당 정보를 얻거나 감시하는데 필요한 하드웨어를 내장하고 있어야 하며, CLLocationManager 클래스에서 이를 확인하는 메소드들을 제공하고 있다. 또한 이들 하드웨어는 전력을 많이 소비하므로 반드시 필요한 경우에만 활성화시켜야 한다.

  1. CLLocationManager를 이용하는 일반적인 순서는 아래와 같다.
  2. 해당 기능을 사용하기 전에 디바이스 지원 여부와 CLLocationManager 클래스에서 제공하는 메소드를 통해 해당 기능 사용 가능여부를 확인하고, 사용이 불가한 경우 작업을 취소한다.
  3. CLLocationMananger 클래스의 인스턴스를 생성한다.
  4. 델리게이트(CLLocationManagerDelegate)를 설정한다.
  5. 사용하고자 하는 기능과 관련된 속성들을 설정한다.
  6. 해당 기능과 관련된 시작 메소드를 호출하여 이벤트를 수신한다.

CoreLocation Sample : Getting current location

LatLonSample

– (void)viewDidLoad {

[super viewDidLoad];


locationManager = [[CLLocationManager alloc] init];

locationManager.delegate = self;

locationManager.desiredAccuracy = kCLLocationAccuracyBest;

locationManager.distanceFilter = 200;


[locationManager startUpdatingLocation];

}


– (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

{

[manager stopUpdatingLocation];


latitudeLabel.text = [NSString stringWithFormat:@”%f”, newLocation.coordinate.latitude];

longitudeLabel.text = [NSString stringWithFormat:@”%f”, newLocation.coordinate.longitude];

}



– (void)dealloc {

[locationManager release];

[super dealloc];

}