ルーティングの概要を計算する

テキスト検索(新版)または Nearby Search(新版)を使用して、レスポンスの各場所までの所要時間と距離を計算するには:

  1. リクエストで routingParameters.origin パラメータを渡して、ルーティングの起点の緯度と経度の座標を指定します。このパラメータは、レスポンスの各場所までの所要時間と距離を計算するために必要です。

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

API Explorer では、実際のリクエストを実行して、API と API オプションを把握できます。

試してみる

テキスト検索(新版)を使用する

次のリクエストでは、テキスト検索(新版)レスポンスの各場所までの所要時間と距離を計算します。

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    }
  }
}' \
-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'

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

{
  "places": [
    {
      object (Place)
    }
  ]
  "routingSummaries": [
    {
      object (RoutingSummary)
    }
}

routingSummaries 配列内の各要素は、places 配列内のプレイスと同じ配列位置にあります。つまり、routingSummaries[0] の要素は places[0] の場所に対応します。

routingSummaries の配列長は places の配列長と同じです。場所の routingSummary が使用できない場合、配列エントリは空になります。

この例では、ルーティングの出発地から各場所までの所要時間と距離を計算するため、レスポンスの routingSummaries.legs フィールドには、ルーティングの出発地から場所までの durationdistanceMeters を含む単一の Leg オブジェクトが含まれます。

{
  "places": [
    {
      "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Gözleme King Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    …
  ]
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "597s",
          "distanceMeters": 2607
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0"
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0"
    },
   …
  ]
}

この例では、ルーティングの起点から結果の最初の場所までの所要時間と距離は 597 秒と 2, 607 メートルです。

この例では、周辺検索レスポンスの各プレイスまでの移動時間と距離を計算します。この例では、オーストラリアのシドニーにあるレストランを検索し、位置情報の制限とルーティングの出発地を同じ緯度と経度の座標に設定します。

  curl -X POST -d '{
    "includedTypes": ["restaurant"],
    "maxResultCount": 10,
    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": -33.8688,
          "longitude": 151.1957362},
        "radius": 500.0
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": -33.8688,
        "longitude": 151.1957362
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \
  -H "X-Goog-FieldMask: places.displayName,routingSummaries" \
  https://places.googleapis.com/v1/places:searchNearby

locationRestriction とルーティング元に同じ座標を使用する必要はありません。たとえば、locationRestriction をシドニーの中心点に設定すると、検索結果がその円に偏重されます。ただし、ルートの始点を自宅の座標に設定すると、検索範囲内の別の場所に設定されたことになります。リクエストは、検索結果を円にバイアスし、家の位置に基づいてルーティングの概要を計算します。

移動オプションを指定する

デフォルトでは、所要時間と距離の計算は自動車用です。ただし、検索で車両タイプやその他のオプションを制御できます。

  • routingParameters.travelMode パラメータを使用して、転送モードを DRIVEBICYCLEWALK、または TWO_WHEELER に設定します。これらのオプションの詳細については、ルートで使用可能な車両タイプをご覧ください。

  • routingParameters.routingPreference プロパティを使用して、ルーティング設定オプションを TRAFFIC_UNAWARE(デフォルト)、TRAFFIC_AWARE、または TRAFFIC_AWARE_OPTIMAL に設定します。各オプションのデータ品質とレイテンシは異なります。詳細については、トラフィック データを含める方法と含めるかどうかを指定するをご覧ください。

    routingParameters.routingPreference プロパティは、プレビュー版(一般提供前)の directionsUri フィールドに含まれる経路に影響します。これは、Google マップがリンクを開いたときに交通オプションを表示するためです。

  • routingParameters.routeModifiers プロパティを使用して、avoidTollsavoidHighwaysavoidFerriesavoidIndoor に指定します。これらのオプションの詳細については、回避するルート特徴を指定をご覧ください。

次の例では、移動モードを DRIVE として指定し、高速道路を回避するように指定します。

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    },
    "travelMode":"DRIVE",
    "routeModifiers": {
      "avoidHighways": 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'