チュートリアル

Yahoo! iOSマップSDKの主要機能をひととおり体験していただくための開発チュートリアルを用意しました。
「利用準備」を済ませたうえでご利用ください。

ルート検索結果を表示する

緯度経度指定によるルート検索およびルート検索結果表示機能を提供します。

1.YMapKitTestAppDelegateにYMKRouteOverlayDelegateプロトコルを追加します。

  • YMapKitTestAppDelegate.h
#import <UIKit/UIKit.h>
#import <YMapKit/YMapKit.h>//YMapKit.frameworkのヘッダーファイルをインポート

#define MIDTOWN_LAT 35.6657214
#define MIDTOWN_LON 139.7310058

//YMKMapViewDelegateを追加
@interface YMapKitTestAppDelegate : NSObject <YMKRouteOverlayDelegate, UIApplicationDelegate, YMKMapViewDelegate,YMKLabelTouchDelegate> {
     UIWindow *window;
     YMKMapView *map; //YMKMapViewインスタンス用ポインタ
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
     

2.YMKRouteOverlayを作成します。

出発地の緯度経度、目的地の緯度経度、移動手段を指定しルートの検索を行います。
結果はYMKRouteOverlayDelegateに返されます。

  • YMapKitTestAppDelegate.m
CLLocationCoordinate2D sp;
sp.longitude = 139.7310058;
sp.latitude = 35.6657214;
CLLocationCoordinate2D gp;
gp.longitude = 139.7454106;
gp.latitude = 35.6586308;

//YMKRouteOverlayを作成
YMKRouteOverlay* routeOrverlay = [[[YMKRouteOverlay alloc] initWithAppid:@"アプリケーションID"] retain];
//YMKRouteOverlayDelegateを設定
routeOrverlay.delegate = self;
//出発地ピンの吹き出し設定
[routeOrverlay setStartTitle:@"東京ミッドタウン"];
//目的地ピンの吹き出し設定
[routeOrverlay setGoalTitle:@"東京タワー"];
//出発地、目的地、移動手段を設定
[routeOrverlay setRouteStartPos:sp withGoalPos:gp withTraffic:TRAFFIC_WALK];
//ルートの検索
[routeOrverlay search];
     

3.検索結果を受け取りYMKRouteOverlayをYMKMapViewに追加します。

YMKMapViewに追加することで地図上にルートが表示されます。

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

4.出発地ピン、目的地ピン、経由点ピンを非表示にする場合は、「mapView:(YMKMapView *)mapView viewForOverlay:(id <YMKOverlay>)overlay」でYMKRouteOverlayViewを作成し、非表示設定の追加を行います。

  • YMapKitTestAppDelegate.m
//overlay追加イベント
- (YMKOverlayView*)mapView:(YMKMapView *)mapView viewForOverlay:(id <YMKOverlay>)overlay
{
   //追加されたoverlayがYMKRouteOverlayか確認
   if([overlay isKindOfClass:[YMKRouteOverlay class]] ){
   //YMKRouteOverlayViewを作成
   YMKRouteOverlayView* wkYMKOverlayView = (YMKRouteOverlayView*)[[[YMKRouteOverlayView alloc] initWithRouteOverlay:overlay] autorelease];
   //出発地ピンを非表示
   wkYMKOverlayView.startPinVisible = NO;
   //目的地ピンを非表示
   wkYMKOverlayView.goalPinVisible = NO;
   //経由点ピンを非表示
   wkYMKOverlayView.routePinVisible = NO;
   return wkYMKOverlayView;
    }
    return nil;
}
     

表示例:ルート検索結果を表示する
ルート検索結果を表示する