電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

iPhoneで緯度経度を取得する簡単な方法

iPhoneGPSWifi(iPod touchも可)を使って現在地の緯度経度を取得する簡単な方法です。
今回は簡単に"Window-based Application"のテンプレートを使った例です。

プロジェクトへCoreLocation.Frameworkを追加


"<プロジェクト名>AppDelegate.h"へヘッダファイルとプロトコルの追加する際の例

・"CoreLocation/CoreLocation.h" をインポートする。
プロトコルへ"CLLocationManagerDelegate"を追加する。

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface testGPSAppDelegate : NSObject <UIApplicationDelegate, CLLocationManagerDelegate> {
    UIWindow *window;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;

@end

<プロジェクト名>AppDelegate.m"で処理する際の例

・CLLocationManagerのインスタンスを作成し、初期化処理をする。
・startUpdatingLocationメソッドで位置情報の取得を開始する。
・位置情報の取得に成功した場合は、didUpdateToLocationメソッドが実行される。
・位置情報の取得に失敗した場合は、didFailWithErrorメソッドが実行される。

#import "testGPSAppDelegate.h"

@implementation testGPSAppDelegate

@synthesize window;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    [window makeKeyAndVisible];
	
	// CLLocationManagerのインスタンスを作成
	CLLocationManager *locationManager = [[CLLocationManager alloc] init];
	if ([locationManager locationServicesEnabled]) {
		// ロケーションサービスが利用できる場合
		locationManager.delegate = self;
		[locationManager startUpdatingLocation];
	} else {
		// ロケーションサービスが利用できない場合
	}
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
	// 緯度経度取得に成功した場合
	CLLocationCoordinate2D coordinate = newLocation.coordinate;
	
	CLLocationDegrees latitude = coordinate.latitude;	// 緯度
	CLLocationDegrees longitude = coordinate.longitude;	// 経度

	// 試しにNSLogで出力
	NSLog(@"%f,%f", latitude, longitude);
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
	// 緯度経度取得に失敗した場合
}

- (void)dealloc {
    [window release];
    [super dealloc];
}

@end

ユメみるiPhone ―クリエイターのためのiPhone SDKプログラミング

ユメみるiPhone ―クリエイターのためのiPhone SDKプログラミング