アプリを開発する
1. 新規プロジェクトの作成
XCodeを起動して、メニューから[File]-[New]-[Project]を選択し、新規プロジェクトを立ち上げます。
アプリケーションのタイプは、今回は「SingleViewApplication」を選択します。
今回は、プロジェクト名はConvinienceRouteとします。メモリ管理を厳格に行うため「AutomaticReferenceCounting」のチェックを外してプロジェクトを作成してください。
新規プロジェクトを作成すると、デフォルトでいくつかのファイルが生成されます。そのうちの「ViewController.xib」は、今回は使わないので削除します。同時に、AppDelegate.mのコードを書き換えます。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; //コメントアウトする
self.viewController = [[ViewController alloc] init]; //追記
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
2. 現在地周辺の地図を表示する
まずは、現在地を取得し、現在地周辺の地図を表示させてみたいと思います。
デフォルトで作成されているViewController.h に、YMapKit.frameworkとCoreLocation,frameworkのヘッダーファイルをインポートし、YMKMapViewのイベント取得のためのYMKMapViewDelegateプロトコルを設定し、現在地を取得するためにCLLocationManagerDelegateプロトコルを設定します。
ユーザの位置情報は、メソッド間で使いまわすので、インスタンス変数として設定します。
#import <UIKit/UIKit.h>
#import <YMapKit/YMapKit.h> // iOS Map SDKを読み込む
#import <CoreLocation/CoreLocation.h> // CoreLocationを読み込む
@interface ViewController : UIViewController<YMKMapViewDelegate, CLLocationManagerDelegate>
{
YMKMapView *map; //YMKMapViewインスタンス用ポインタ
CLLocationManager *locationMgr; //ロケーションマネージャ
CLLocationCoordinate2D userLocation; //ユーザの位置(緯度経度)
}
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)dealloc
{
// インスタンス変数を開放する
[map release];
[locationMgr release];
[super dealloc];
}
- (void)viewDidLoad
{
[super viewDidLoad];
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height;
//YMKMapViewのインスタンスを作成
map = [[YMKMapView alloc] initWithFrame:CGRectMake(0, 0, width, height) appid:@"<あなたのアプリケーションID> " ];
//地図のタイプを指定 標準の地図を指定
map.mapType = YMKMapTypeStandard;
map.zoomEnabled = YES;
//YMKMapViewを追加
[self.view addSubview:map];
//YMKMapViewDelegateを登録
map.delegate = self;
// ロケーションマネージャを作成
locationMgr = [[CLLocationManager alloc] init];
locationMgr.delegate = self;
// 現在位置取得
[locationMgr startUpdatingLocation];
}
// 現在位置取得完了
-(void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
userLocation = newLocation.coordinate;
// シミュレータでは現在位置を取得できないので、開発用にデフォルトの値を設定しておく
userLocation.latitude = 35.6657214;
userLocation.longitude = 139.7310058;
// 地図の中心位置・縮尺を設定
map.region = YMKCoordinateRegionMake(userLocation, YMKCoordinateSpanMake(0.005, 0.005));
// 測位を終了させる
[locationMgr stopUpdatingLocation];
}
これで、シミュレータを実行してみてください。指定した緯度経度周辺の地図が表示されたでしょうか。
地図を表示させる手順は、下記のチュートリアルにも解説がありますので、こちらも参照してください。


