チュートリアル

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

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

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

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

  • ViewController.h
@interface ViewController : UIViewController <YMKMapViewDelegate, YMKRouteOverlayDelegate>

2.YMKRouteOverlayを作成します。

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

  • ViewController.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"];

// YMKRouteOverlayDelegateを設定
routeOrverlay.delegate = self;

// 出発地ピンの吹き出し設定
[routeOrverlay setStartTitle:@"東京ミッドタウン"];

// 目的地ピンの吹き出し設定
[routeOrverlay setGoalTitle:@"東京タワー"];

// 出発地、目的地、移動手段を設定
[routeOrverlay setRouteStartPos:sp withGoalPos:gp withTraffic:TRAFFIC_WALK];

// ルートの検索
[routeOrverlay search];

3.delegateメソッド「mapView:(YMKMapView *)mapView viewForOverlay:(id <YMKOverlay>)overlay」を実装し、YMKRouteOverlayViewを返します。

出発地ピン、目的地ピン、経由点ピンを非表示にする場合は、メソッド内で非表示設定の追加を行います。

  • ViewController.m
- (YMKOverlayView*)mapView:(YMKMapView *)mapView viewForOverlay:(id <YMKOverlay>)overlay
{
    // 追加されたoverlayがYMKRouteOverlayか確認
    if([overlay isKindOfClass:[YMKRouteOverlay class]] ){
        // YMKRouteOverlayViewを作成
        YMKRouteOverlayView* wkYMKOverlayView = (YMKRouteOverlayView*)[[YMKRouteOverlayView alloc] initWithRouteOverlay:overlay];

        // 出発地ピンを非表示
        wkYMKOverlayView.startPinVisible = NO;

        // 目的地ピンを非表示
        wkYMKOverlayView.goalPinVisible = NO;

        // 経由点ピンを非表示
        wkYMKOverlayView.routePinVisible = NO;

        return wkYMKOverlayView;
    }

    return nil;
}

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

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

  • ViewController.m
// ルート検索が正常に終了した場合
-(void)finishRouteSearch:(YMKRouteOverlay*)routeOverlay
{
    // YMKRouteOverlayをYMKMapViewに追加
    [map addOverlay:routeOverlay];
}

// ルート検索が正常に終了しなかった場合
-(void)errorRouteSearch:(YMKRouteOverlay*)routeOverlay withError:(int)error
{
    // エラー処理
}

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