読者です 読者をやめる 読者になる 読者になる

koogawa log

iOS、Android、foursquareに関する話題

iOSで緯度・経度を取得する方法メモ

追記:Swift版はこちら

【Tips】iOSで位置情報を取得する方法(Swift編) - koogawa log


CoreLocationを使って、緯度・経度を取得する方法をメモしておきます。

実装方法

まずは「CoreLocation.framework」を追加します。

f:id:koogawa:20131122152458p:plain

ヘッダをインポートします。

#import <CoreLocation/CoreLocation.h>

CLLocationManagerDelegateプロトコルを宣言します。

@interface ViewController : UIViewController <CLLocationManagerDelegate>
@end

現在地情報の取得を開始します。

if ([CLLocationManager locationServicesEnabled])
{
    // インスタンスを生成
    _locationManager = [[CLLocationManager alloc] init];

    // デリゲートを設定
    _locationManager.delegate = self;

    // 位置情報の取得開始
    [_locationManager startUpdatingLocation];
}

この状態でiPhoneの位置情報が更新されると、次のメソッドが呼ばれます。

// 位置情報が更新されるたびに呼ばれる
- (void)locationManager:(CLLocationManager *)manager
    didUpdateToLocation:(CLLocation *)newLocation
           fromLocation:(CLLocation *)oldLocation
{
    self.latTextField.text = [NSString stringWithFormat:@"%.2f", newLocation.coordinate.latitude];
    self.lonTextField.text = [NSString stringWithFormat:@"%.2f", newLocation.coordinate.longitude];
}

現在地情報の取得を停止するには次のメソッドを実行します。

if ([CLLocationManager locationServicesEnabled]) {
    [_locationManager stopUpdatingLocation];
}

サンプルコード

注意点

  • シミュレータでテストする場合は、メニュー > デバッグ > 位置 から位置情報をカスタマイズできます
  • ユーザが位置情報の取得を許可していない場合は測定できません

参考リンク