SHOEISHA iD

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

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

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

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

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

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

4. 現在地からそのコンビニまでの道のりを表示する

 次に、ポップアップに追加したボタンをタップすると、現在地からその地点までのルート案内を表示するよう実装します。

 ルート検索を行うために、ViewController.hにYMKRouteOverlayDelegateプロトコルを追加し、ViewController.mにポップアップのボタンがタップされたときに呼ばれるメソッドを追加します。

ViewController.m
- (void)mapView:(YMKMapView*)mapView annotationView:(YMKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
    NSDictionary *thisAnnotationData = [annotationDatas objectAtIndex:control.tag]; //押されたのがどのピンか判定

    NSString *distinationString = [[thisAnnotationData objectForKey:@"Geometry"] objectForKey:@"Coordinates"];  
//ローカルサーチAPIのレスポンスから、表示用データを生成する
    NSArray *distinationArray   = [distinationString componentsSeparatedByString:@","];
    
    CLLocationCoordinate2D destination = CLLocationCoordinate2DMake([[distinationArray objectAtIndex:1] floatValue], [[distinationArray objectAtIndex:0] floatValue]);     
    
    //YMKRouteOverlayを作成
    YMKRouteOverlay* routeOrverlay = [[[YMKRouteOverlay alloc] initWithAppid:@"<あなたのアプリケーションID>"] retain];
    //YMKRouteOverlayDelegateを設定
    routeOrverlay.delegate = self;
    //出発地ピンの吹き出し設定
    [routeOrverlay setStartTitle:@"現在地"];
    //目的地ピンの吹き出し設定
    [routeOrverlay setGoalTitle:[thisAnnotationData objectForKey:@"Name"]];
    //出発地、目的地、移動手段を設定
    [routeOrverlay setRouteStartPos:userLocation withGoalPos:destination withTraffic:TRAFFIC_WALK];
    //ルートの検索
    [routeOrverlay search];
    
    [routeOrverlay release];
    
}

//ルート検索が正常に終了した場合
-(void)finishRouteSearch:(YMKRouteOverlay*)routeOverlay
{
    //YMKRouteOverlayをYMKMapViewに追加
    [map addOverlay:routeOverlay];
    [map removeAnnotations:annotations];
    
}
//ルート検索が正常に終了しなかった場合
-(void)errorRouteSearch:(YMKRouteOverlay*)routeOverlay withError:(int)error
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"エラー" message:@"ルート検索エラー" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}

 ここまで実装したら、シミュレータを起動させてみてください。吹き出しに表示されている「GO!」というボタンをタップすると、現在地からそのコンビニまでのルート検索結果が地図上に表示されます。

 ルート検索の表示方法は、下記のURLでも解説されていますので、併せて参照してください。

おわりに

 いかがでしたか? 地図とローカルサーチを組み合わせて、便利なアプリがカンタンに実装できることを体感していただけたでしょうか。

 コンビニ以外にも、YOLP「ローカルサーチAPI」を使えばあらゆるPOIのデータを取得できます。あなたのアイディアでさまざまなカセット・APIを組み合わせて、便利な位置情報アプリをどんどん開発していただければ幸いです。

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング