Develop
2014.05.24 20:19

[ios] 아이폰 GPS 사용하기

조회 수 4037 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
GPS 사용을 위해서 CoreLocation.framework 프레임워크를 추가하고 아래 코드처럼..

# LocationServiceViewController.h
#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

# LocationServiceViewController.m
#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

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
841 Develop '2014 모바일 개발 트렌드' 발표자료입니다. file hooni 2014.10.02 1132
840 Develop Aspect Oriented Programming in Objective-C hooni 2015.05.18 939
839 Develop DDay Memo 1.9.4 소스코드 secret hooni 2015.10.03 0
838 Develop GCM 사용하기 2 (단말에 GCM 구현하기) file hooni 2013.07.06 23407
837 Develop GCM 사용하기 3 (JSP로 GCM 푸시 서버 만들기) 4 file hooni 2013.07.06 25418
836 Develop git 브런치 배우기 (링크) hooni 2013.07.09 20694
835 Develop GPL, AGPL, MPL,.. 한눈에 보는 오픈소스SW 라이선스 file hooni 2014.10.14 1257
834 Develop How to Test SMTP AUTH using Telnet hooni 2018.04.05 1582
833 Develop JSON, BSON 변환 file hooni 2013.04.23 11866
832 Develop Laravel 5 Failed opening required bootstrap/../vendor/autoload.php hooni 2018.01.24 1826
831 Develop Mac OS 에 Jenkins 설치하기 (Homebrew) 2 file hooni 2017.03.15 8383
830 Develop macOS에 node, npm 설치하기 (homebrew) file hooni 2021.11.06 1449
829 Develop OGNL(Object Graph Navigation Language) hooni 2013.04.23 15777
828 Develop OpenGL 강좌 사이트 모음 hooni 2013.04.23 9668
827 Develop OPT와 CAS에 대한 자료.. (교수님 메일로 보내드린 자료..) file hooni 2013.04.23 13966
826 Develop SVN 명령어 (SVN command) hooni 2014.02.28 12202
Board Pagination Prev 1 2 3 4 5 ... 53 Next
/ 53