ルーティングの概要とルート沿いの検索を組み合わせる

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

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

  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'

次の画像は、ルートのポリライン、新しい出発地(水色のピン)、検索結果の場所(緑色のピン)を含む地図を示しています。すべての結果がルート上にあるものの、サンマテオを過ぎていることに注目してください。

更新元の検索結果。