Compare Route

この章はルート比較について説明します。

ルート比較とは

新ルートを探索した時、案内中ルートと比べて距離や時間、料金がどの程度変わるのか、ルート形状がどう変わるのか、を比較するための機能です。

処理の流れ

  1. 案内中ルートがある状態でCompareRouteRequestインスタンスを生成します。
  2. 別ルートの条件を RouteOption によって調整します。
  3. Navi.compareRoute()を呼び出します。リスナで結果が通知されます。
  4. 処理結果が成功だった場合、新ルートで案内するか、案内中ルートの案内を継続するか選択できます。 新ルートで案内したい場合、Navi.startGuidance()の引数に compareRouteResult.getNewRoute() を指定します。 案内中ルートの案内を継続したい場合、Navi.cancelCompareRouteResult();を呼び出します。

有料道路を全く使わないルートを探索するサンプルコードは以下の通りです。

CompareRouteRequest request = new CompareRouteRequest();
RouteOptions options = new RouteOptions();
options.setUseToll(false);
options.setUseHighway(false);
request.setRouteOptions(options);

Navi.getInstance().compareRoute(request, (errorCode, compareRouteResult) -> {
	if (errorCode != CompareRouteListener.ErrorCode.NONE) {
		// 処理失敗
		return;
	}

	if (!compareRouteResult.isChangeRoute()) {
		// ルートに変化なし
		return;
	}

	if (newRouteSelected()) {
		// 新しいルートが選択された
		Navi.getInstance().startGuidance(compareRouteResult.getNewRoute(), new StartGuidanceListener() {
			@Override
			public void onCompleted(ErrorCode errorCode, GuidePointResult guidePointResult) {
				if (errorCode == StartGuidanceListener.ErrorCode.NONE) {
					// 成功時の処理が何かあればここに記述
				}
			}
		});
	}
	}
	else {
		// 案内中ルートでの案内を継続する
		Navi.getInstance().cancelCompareRouteResult();
	}
});