4. 現在地からそのコンビニまでの道のりを表示する
次に、ポップアップに追加したボタンをタップすると、現在地からその地点までのルート案内を表示するよう実装します。
ルート検索を行うために、ViewController.hにYMKRouteOverlayDelegateプロトコルを追加し、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を組み合わせて、便利な位置情報アプリをどんどん開発していただければ幸いです。