追記:Swift版はこちら
【Tips】iOSで位置情報を取得する方法(Swift 3.0対応) - koogawa blog
CoreLocationを使って、緯度・経度を取得する方法をメモしておきます。
実装方法
まずは「CoreLocation.framework」を追加します。
ヘッダをインポートします。
#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];
}
サンプルコード
注意点
- シミュレータでテストする場合は、メニュー > デバッグ > 位置 から位置情報をカスタマイズできます
- ユーザが位置情報の取得を許可していない場合は測定できません