ルーティング設定の調整

ルート計算(ルート変更を含む)では、移動に要する時間が最も短いルートがデフォルトの最適ルートとして返されます。ただし、ルーティング戦略を変更して、代替ルートのうち短いルートを返すようにできます。

短い」とは、デフォルトの費用モデルに基づく最適なルートの中で最も短いルートを意味します。短いルートが最短ルートとは限りません。そのルートが最適な選択肢ではない可能性があります。たとえば、最短ルートが 10 km で所要時間が 50 分、別のルートが 15 km で所要時間が 20 分の場合、5 km 短縮するために 30 分費やすことは良いトレードオフではないため、2 番目のルートが最適です。

ルーティング戦略は、ルートの完了まで変更されません。既存のルートのルーティング戦略を変更するには、目的地を消去し、新しいルーティング戦略で再び設定する必要があります。

ルートの詳細の取得

特定のウェイポイントに最適なルート戦略を決定するには、getRouteInfoForDestination() を呼び出して、デフォルトの最適なルートと絶対的に短いルートの両方のルート詳細を取得します。詳細には、所要時間と目的地のウェイポイントまでの距離が含まれます。

これらの詳細は、コールバックの GMSNavigationRouteInfo から取得されます。

次のコードサンプルは、2 つのルーティング戦略のそれぞれについてルートの詳細を取得する方法を示しています。

Swift

let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
                                      routingOptions: routingOptions) { routeInfo in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions =
    [[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
                   withRoutingOptions:routingOptions
                             callback:^(GMSNavigationRouteInfo *routeInfo){...}];

ルーティング戦略を設定する

ルーティング戦略を構成するには、GMSNavigationRoutingOptions を使用して、setDestinations() の呼び出し時に routingStrategy を設定します。

routingStrategy には、次のいずれかの列挙型値を指定します。

列挙値説明
GMSNavigationRoutingStrategyDefaultBest Navigation SDK のデフォルトの費用モデルに基づいてルートをランク付けします。これはデフォルトのルーティング戦略です。
GMSNavigationRoutingStrategyShorter ルートを距離でランク付けします。ランク付けが最も高いルートは、返されたルートの中で最も短いルートです。

次のコード例は、より短いルートのルーティング戦略を設定する方法を示しています。

Swift

let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
                           routingOptions: routingOptions) { routeStatus in
  ...
}

Objective-C

GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
            routingOptions:routingOptions
                  callback:^(GMSRouteStatus routeStatus){...}];

フェリーを含むルート

デフォルトでは、Navigation SDK for iOS はフェリーを含むルートを除外します。ルートの一部としてフェリー オプションを含める場合は、avoidsFerriesfalse に設定して、このルーティング設定を調整し、フェリー セグメントにルートを公開できます。

Swift

self.mapView.navigator?.avoidsFerries = false

Objective-C

self.mapView.navigator.avoidsFerries = NO

ルート コールアウトの形式

より短いルートのルーティング戦略では、ルート沿いのコールアウトに距離の詳細が表示されます。代わりに、到着予定時間のコールアウトを使用できます。

ルート コールアウトの形式の設定

ルート コールアウトの形式を変更するには、GMSMapViewrouteCalloutFormat を設定します。routeCalloutFormat には、次のいずれかの列挙型値を指定します。

列挙値説明
GMSNavigationRouteCalloutFormatDefault デフォルトの最適ルート ルーティング戦略を使用した場合の残り時間を表示します。より短いルートのルーティング戦略を使用した場合の残りの距離を表示します。
GMSNavigationRouteCalloutFormatTime 残り時間を表示します。
GMSNavigationRouteCalloutFormatDistance 残りの距離が表示されます。

次のコードサンプルは、ルート コールアウトの形式を構成する方法を示しています。

Swift

self.mapView.routeCalloutFormat = .time

Objective-C

_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;