ルート計算(ルート変更を含む)では、移動時間が最も短いルートがデフォルトの最適ルートとして返されます。ただし、短い方の代替ルートが返されるように、ルーティング戦略を変更することもできます。
「より短い」という用語は、デフォルトのコストモデルに基づく最適なルートの中で最短のルートを意味します。より短いルートは、絶対的な最短ルートではない場合があります。これは、この方法は不適切な代替手段となる可能性があるためです。たとえば、絶対的に短いルートが 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 はフェリーを含むルートを除外します。ルートにフェリー オプションを含める場合は、avoidsFerries
を false
に設定することで、このルーティング設定を調整して、ルートをフェリー セグメントに公開できます。
例
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
ルート コールアウトの形式
短いルートのルーティング戦略では、ルート上のコールアウトに距離の詳細が表示されます。代わりに到着予定時刻のコールアウトを使用することもできます。
ルート コールアウト形式の構成
ルート コールアウトの形式を変更するには、GMSMapView
で routeCalloutFormat
を設定します。routeCalloutFormat
は、次のいずれかの列挙値を取ります。
列挙値 | 説明 |
---|---|
GMSNavigationRouteCalloutFormatDefault | デフォルトの最適ルート ルーティング戦略を使用する場合の残り時間が表示されます。短いルートのルーティング戦略を使用した場合に、残りの距離が表示されます |
GMSNavigationRouteCalloutFormatTime | 残り時間を表示します。 |
GMSNavigationRouteCalloutFormatDistance | 残り距離を表示します。 |
例
次のコード例は、ルート コールアウトの形式を構成する方法を示しています。
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;