ルート沿いを検索してルートの概要を表示する

ルートの概要の計算とルート沿いの検索を組み合わせることができます。この場合、テキスト検索(新版)は、各場所までの移動時間と距離、および各場所からルートの最終目的地までの移動時間と距離をレスポンスで返します。

テキスト検索(新版)を使用して、ルートに沿った検索とともにルートの概要を計算するには:

  1. Routes API を使用して、レスポンスでルート ポリラインを返すルートを計算します。

  2. searchAlongRouteParameters.polyline.encodedPolyline パラメータを使用して、ルートのポリラインをテキスト検索(新版)に渡し、検索結果をルートにバイアスします。レスポンスには、検索条件に一致し、指定されたルートの近くにある場所が含まれます。

  3. レスポンスに routingSummaries 配列が含まれるように、フィールド マスクに routingSummaries を含めます。この配列には、ルーティングの出発地からレスポンス内の各場所までの所要時間と距離が含まれます。

API Explorer を使用すると、ライブ リクエストを行って、API と API オプションを理解できます。

デフォルトでは、テキスト検索(新機能)はルート全体に沿って検索を行います。

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food",
  "searchAlongRouteParameters": {
    "polyline": {
      "encodedPolyline": "ROUTE_POLYLINE"
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

レスポンスには、一致する場所を含む places 配列と、各場所までの所要時間と距離を含む routingSummaries 配列の 2 つの配列が含まれます。

{
  "places": [
    {
      "formattedAddress": "1199 El Camino Real, San Bruno, CA 94066, USA",
      "priceLevel": "PRICE_LEVEL_INEXPENSIVE",
      "displayName": {
        "text": "Vegan Mob - Vegan BBQ and Soul Food",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "839 Kearny St, San Francisco, CA 94108, USA",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Enjoy Vegetarian",
        "languageCode": "en"
      }
    },
   
],
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "285s",
          "distanceMeters": 1616
        },
        {
          "duration": "2466s",
          "distanceMeters": 58147
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808f87f9ede375f5:0xa37171fea1a16b28!1m0!3e0"
    },
    {
      "legs": [
        {
          "duration": "696s",
          "distanceMeters": 4704
        },
        {
          "duration": "2787s",
          "distanceMeters": 58901
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/37.42268,-122.08473/''/37.77877,-122.38781/data=!4m7!4m6!1m0!1m2!1m1!1s0x808580f4cebdb06f:0xd3af09e5742234f2!1m0!3e0"
    },
   
  ]
}

legs 配列の各エントリについて、テキスト検索(新版)は 2 区間の所要時間を返します。

  • 最初の区間には、出発地から場所までの移動時間と距離が含まれます。この例では、出発地から結果の最初の場所までの所要時間と距離は 285 秒と 1, 616 メートルです。

  • 2 番目の区間には、場所からルートの目的地までの移動時間と距離が含まれます。この例では、所要時間と距離は 2,466 秒と 58,147 メートルです。

ルーティングの出発地、移動手段、ルート修飾子を指定する

検索とルートの概要の計算は、ルートの出発地、移動手段、ルート修飾子、ルート設定を指定することで変更できます。移動手段とルート修飾子は、移動手段を指定するトピックで説明されているように、ルートを指定せずにルートの概要を計算する場合と同じように機能します。

デフォルトでは、各結果の最初のレッグには、ポリラインで定義された出発地から各地点までの距離が含まれます。ただし、リクエストでルーティング元を明示的に指定することで、このデフォルトをオーバーライドできます。指定した場合、すべてのレスポンスの最初のルートは、指定されたルートの出発地からの距離と所要時間を指定し、ポリラインの出発地をオーバーライドします。

次の例では、カリフォルニア州サンマテオの座標をルートの出発地として指定し、有料道路を回避するように指定して、結果の数を 5 に設定しています。

  curl -X POST -d '{
    "textQuery" : "Spicy Vegetarian Food",
    "maxResultCount": 5,
    "searchAlongRouteParameters": {
      "polyline": {
        "encodedPolyline": "ROUTE_POLYLINE"
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": 37.56617,
        "longitude": -122.30870
      },
      "travelMode":"DRIVE",
      "routeModifiers": {
        "avoidTolls": true
      }
    }
  }' \
  -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
  -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
  'https://places.googleapis.com/v1/places:searchText'

次の画像は、ルートのポリライン、新しい出発地(水色のピン)、検索結果の場所(緑色のピン)を含む地図を示しています。結果はすべてルート沿いですが、サンマテオを過ぎています。

更新元の検索結果。

試してみよう:

API Explorer を使用すると、サンプル リクエストを作成して、API と API オプションを理解できます。

  1. ページの右側にある API アイコン api を選択します。

  2. 必要に応じてリクエスト パラメータを編集します。

  3. [Execute] ボタンを選択します。ダイアログで、リクエストに使用するアカウントを選択します。

  4. API Explorer パネルで、全画面アイコン fullscreen を選択して API Explorer ウィンドウを拡大します。