ルート沿いの検索の概要

ルート沿いの検索機能は、次の Places(新版)API で利用できます。

  • Text Search(新版)のみ: 事前に定義されたルート沿いの場所を検索します。
  • テキスト検索(新版)と Nearby Search(新版): 指定されたルートの出発地から検索結果の各場所までのルートの概要を計算します。
  • テキスト検索(新版)のみ: 事前に定義されたルート沿いの各場所のルート概要を計算します。

ルート沿いの検索

Routes API を使用して、2 つの場所間のルートを計算します。Routes API は、車、自転車、二輪車、公共交通機関、徒歩のルートを計算できます。

テキスト検索(新版)では、この計算されたルートを使用してルート沿いの検索を行うことができます。このオプションでは、Routes API から事前に計算されたルートをテキスト検索(新版)リクエストに渡します。レスポンスには、検索条件に一致し、指定されたルートの近くにある場所が含まれます。

ルート沿いの検索は、locationRestriction または locationBias リクエスト オプションを使用して検索結果をバイアスするのと似ています。locationRestriction はビューポートの境界内にある検索結果を返しますが、locationBias はビューポート外の検索結果を返すことがあります。ただし、locationBias オプションと locationRestriction オプションでは検索結果を優先する地域を指定できますが、テキスト検索のルート沿い検索機能では、ルートの出発地から目的地までの迂回時間が最小限になるように検索結果を優先することもできます。検索結果をバイアスするには、locationBias または locationRestriction をポリラインと組み合わせて使用します。

たとえば、Routes API で計算された、出発地(Routes API ではウェイポイントと呼ばれる)から目的地までのルートを考えてみましょう。

出発地のウェイポイントから目的地までのルートと検索結果。

ルート沿いの検索では、出発地から目的地までの迂回時間が最小限になるように、ルート付近の場所が優先的に返されます。この例では、ポイント A、B、C が検索によって返された場所です。

ルートの概要を計算する

テキスト検索(新版)と Nearby Search(新版)では、リクエストで指定されたルートの出発地に基づいて、レスポンス内の各場所へのルートの概要(所要時間と距離)を計算できます。ルートの出発地を指定すると、レスポンスには、検索に一致する場所のリストだけでなく、ルートの出発地から各場所までの移動時間と距離も含まれます。

次の画像では、ポイント A、B、C は検索レスポンスで返された場所です。

ポイント A、B、C は、検索レスポンスで返される場所です。

結果の各場所について、レスポンスには、ルートの出発地からその場所までの移動時間と距離が含まれます(利用可能な場合)。

デフォルトでは、移動時間と距離は Routes API の TRAFFIC_UNAWARE オプションを使用して計算されます。必要に応じて、計算中にリアルタイムの交通状況 TRAFFIC_AWARE_OPTIMAL またはレイテンシが短縮されたリアルタイムの交通状況 TRAFFIC_AWARE を考慮するようにルート設定を指定できます。

ルート、区間、ウェイポイントについて

Routes API で計算されるルートは、複数のコンポーネントで構成されています。

ルートを構成するコンポーネント。

ルートは次のコンポーネントで構成されています。

  • Waypoint: ルートを計算するには、少なくとも出発地と目的地の場所を指定します。これらの場所は、ルート上のウェイポイントとして定義します。中間地点は、出発地と目的地の間にあり、ルートが通過する場所です。
  • ルート: 出発地のウェイポイントから、中間ウェイポイントを経由して、目的地のウェイポイントまでの移動全体。ルートは 1 つ以上の区間で構成されます。

    テキスト検索にルートを渡す場合は、Routes API から返されたルートのエンコードされたポリラインを渡します。エンコードされたポリラインは、緯度と経度のエンコードされたリストで、ルートのポリラインを文字列として表すことができます。

  • 区間: ルート内のウェイポイントから次のウェイポイントまでの経路。各区間は、1 つ以上の個別のステップで構成されます。

    ルートには、各経由地から次の経由地までの経路ごとに個別の区間が含まれます。たとえば、ルートに 1 つの出発地ウェイポイントと 1 つの目的地ウェイポイントが含まれている場合、ルートには 1 つの区間が含まれます。

    出発地と目的地に加えてルートに追加するウェイポイント(中間ウェイポイント)ごとに、API は個別の区間を追加します。

ルートとルートの計算の詳細については、Routes API をご覧ください。

ルート沿いの検索でルートの概要を計算する

ルートの概要の計算とルート沿いの検索を組み合わせることができます。この場合、テキスト検索(新版)は、レスポンスで各場所までの移動時間と距離を返し、各場所からルートの最終目的地までの移動時間と距離を返します。この計算は、指定されたルートから検索結果の場所に立ち寄り、最終目的地に向かう場合の移動時間と距離を算出するものと考えてください。

たとえば、Routes API で計算された出発地から目的地までの次のルートについて考えてみましょう。このルートを検索条件とともにテキスト検索(新版)API に渡します。

出発地のウェイポイントから目的地までのルート(検索結果への迂回を含む)。

この例では、場所 A はテキスト検索(新版)の検索結果で返された場所です。レスポンス内の各場所について、その場所に迂回するために必要な所要時間と距離が、2 区間のルートとして検索に含まれます。

  • 最初の区間には、ルートの出発地から場所までの移動時間と距離が含まれます。この例では、出発地から場所 A まで。
  • 2 つ目の区間には、場所からルートの目的地までの移動時間と距離が含まれます。この例では、A から宛先までです。

レスポンスの情報から、迂回ルートの所要時間と距離を計算できます。

  • \(t_{OD}\) は出発地から目的地までの移動時間、 \(s_{OD}\) は出発地から目的地までの移動距離です。
  • \(t_{OA}\) は、出発地から A までの移動時間です。 \(s_{OA}\) は、出発地から A までの移動距離です。
  • \(t_{AD}\) は A から目的地までの移動時間、 \(s_{AD}\) は A から目的地までの移動距離です。

迂回所要時間は、元のルート(出発地から目的地まで)と新しいルート(出発地から A を経由して目的地まで)の所要時間の差です。

$$ t_{detour} = t_{OA} + t_{AD} - t_{OD} $$

迂回距離は、元のルート(出発地から目的地まで)と新しいルート(出発地から A を経由して目的地まで)の距離の差です。

$$ s_{detour} = s_{OA} + s_{AD} - s_{OD} $$