ルート計算(ルート変更を含む)では、ナビゲーションに要する時間が最も短いルートがデフォルトの最適ルートとして返されます。ただし、ルーティング戦略を変更して、代わりに短い方の代替ルートが返されるようにすることもできます。
「短い」とは、デフォルトの費用モデルに基づく最適なルートの中で最も短いルートを意味します。短いルートは、絶対的に最短のルートではない可能性があります。そのオプションは、代替ルートとして適切でない可能性があるためです。たとえば、絶対的に最短のルートが 10 km で、ナビゲーションに 50 分かかり、別のルートが 15 km で、ナビゲーションに 20 分しかかからない場合、2 番目の選択肢が最適です。5 km を短縮するために 30 分を費やすのは、適切なトレードオフではないためです。
ルート設定は、一度設定すると、ルートが完了するまで変更されません。既存のトリップのルーティング戦略を変更するには、目的地をクリアして、新しいルーティング戦略で再設定する必要があります。
ルートの詳細を取得しています
特定のウェイポイントに最適なルート戦略を判断するには、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 はフェリーを含むルートを除外します。ルートの一部としてフェリー オプションを含める場合は、avoidsFerries を false に設定して、フェリー セグメントにルートを公開するようにこのルーティング設定を調整できます。
例
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
ルート コールアウトの形式
最短ルートのルーティング戦略では、ルート沿いのコールアウトに距離の詳細が表示されます。代わりに ETA コールアウトを使用できます。
ルート コールアウト形式の構成
ルート コールアウトの形式を変更するには、GMSMapView で routeCalloutFormat を設定します。routeCalloutFormat は、次のいずれかの列挙値を取ります。
| 列挙値 | 説明 |
|---|---|
| GMSNavigationRouteCalloutFormatDefault | デフォルトの最適ルートのルーティング戦略を使用している場合に、残り時間を表示します。短いルートのルーティング戦略を使用している場合に、残りの距離を表示します |
| GMSNavigationRouteCalloutFormatTime | 残り時間を表示します。 |
| GMSNavigationRouteCalloutFormatDistance | 残りの距離を表示します。 |
例
次のコード例は、ルート コールアウト形式を構成する方法を示しています。
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;