본문 바로가기

프로그래밍/아이폰 프로그래밍

아이폰 GPS 사용하기


♨ 프레임워크 추가 : CoreLocation.framework




#import <UIKit/UIKit.h>

#import <CoreLocation/CoreLocation.h>


@interface LocationServiceViewController : UIViewController 

<CLLocationManagerDelegate> {


CLLocationManager *locationManager;

IBOutlet UILabel *latitude;

IBOutlet UILabel *longitude;

IBOutlet UILabel *Heading;

}


@property (nonatomic, retain) CLLocationManager *locationManager;

@property (nonatomic, retain) IBOutlet UILabel *latitude;

@property (nonatomic, retain) IBOutlet UILabel *longitude;

@property (nonatomic, retain) IBOutlet UILabel *Heading;


@end
 






#import "LocationServiceViewController.h"


@implementation LocationServiceViewController


@synthesize locationManager;

@synthesize latitude;

@synthesize longitude;

@synthesize Heading;


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

- (void)viewDidLoad {

    [super viewDidLoad];

self.locationManager = [[CLLocationManager alloc] init];

self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

self.locationManager.delegate = self;

[self.locationManager startUpdatingLocation];

[self.locationManager startUpdatingHeading];

CLLocation *curPos = self.locationManager.location;

NSNumber *nLatitude = [NSNumber numberWithDouble:curPos.coordinate.latitude]; // 위도

NSNumber *nLongitude = [NSNumber numberWithDouble:curPos.coordinate.longitude]; // 경도

NSString *sPosition1 = [NSString stringWithFormat:@"%.3f",

  [nLatitude doubleValue]];

NSString *sPosition2 = [NSString stringWithFormat:@"%.3f",

  [nLongitude doubleValue]];

//NSLog(@"%@",sPosition);

[self.latitude setText:sPosition1];

[self.longitude setText:sPosition2];

}


// 좌표 업데이트 델리게이트

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

// GPS 좌표 업데이트 호출

NSNumber *nLatitude = [NSNumber numberWithDouble:newLocation.coordinate.latitude]; // 위도

NSNumber *nLongitude = [NSNumber numberWithDouble:newLocation.coordinate.longitude]; // 경도

NSString *sPosition1 = [NSString stringWithFormat:@"%.3f",

[nLatitude doubleValue]];

NSString *sPosition2 = [NSString stringWithFormat:@"%.3f",

[nLongitude doubleValue]];

//NSLog(@"%@",sPosition);

[self.latitude setText:sPosition1];

[self.longitude setText:sPosition2];

}



// 나침반 델리게이트

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

    NSString *headingStr = [NSString stringWithFormat:

                            @"%.4lf", newHeading.magneticHeading];

    //NSLog(@"%@",headingStr);

[self.Heading setText:headingStr];

}



// GPS 오류 델리게이트

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{

// GPS 좌표 업데이트에 오류가 발생할 호출

}




// Override to allow orientations other than the default portrait orientation.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return YES;

}


- (void)didReceiveMemoryWarning {

// Releases the view if it doesn't have a superview.

    [super didReceiveMemoryWarning];

// Release any cached data, images, etc that aren't in use.

}


- (void)viewDidUnload {

// Release any retained subviews of the main view.

// e.g. self.myOutlet = nil;

}


- (void)viewWillDisappear:(BOOL)animated {

[super viewWillDisappear:animated];

[self.locationManager stopUpdatingHeading];

self.locationManager = nil;

}



- (void)dealloc {

    [super dealloc];

}


@end