SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術

YOLPでiPhoneアプリに挑戦~最寄コンビニ案内アプリ

スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術(3)

  • X ポスト
  • このエントリーをはてなブックマークに追加

アプリを開発する

1. 新規プロジェクトの作成

 XCodeを起動して、メニューから[File]-[New]-[Project]を選択し、新規プロジェクトを立ち上げます。

 アプリケーションのタイプは、今回は「SingleViewApplication」を選択します。

 今回は、プロジェクト名はConvinienceRouteとします。メモリ管理を厳格に行うため「AutomaticReferenceCounting」のチェックを外してプロジェクトを作成してください。

 新規プロジェクトを作成すると、デフォルトでいくつかのファイルが生成されます。そのうちの「ViewController.xib」は、今回は使わないので削除します。同時に、AppDelegate.mのコードを書き換えます。

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プロトコルを設定します。

 ユーザの位置情報は、メソッド間で使いまわすので、インスタンス変数として設定します。

ViewController.h
#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
ViewController.m
#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];
}

 これで、シミュレータを実行してみてください。指定した緯度経度周辺の地図が表示されたでしょうか。

 地図を表示させる手順は、下記のチュートリアルにも解説がありますので、こちらも参照してください。

次のページ
3. 現在位置周辺のコンビニを探し、地図上にピンを立てる

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
スマホアプリ開発の最新トレンド! ぜったい外せない位置情報活用術連載記事一覧

もっと読む

この記事の著者

市川 晶子(ヤフー株式会社)(イチカワ アキコ(ヤフーカブシキガイシャ))

2007年にYahoo! JAPAN入社。主に「Yahoo!ロコ 路線」の開発を担当。PC版・モバイル版の路線サービスリニューアル、YOLPカセットギャラリーの立ち上げなどを担当したあと、iPhoneアプリ「乗換案内 Yahoo!ロコ」の開発を担当。趣味はスキューバダイビングで、MTES Assis...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6544 2012/04/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング