將路線摘要與沿途搜尋功能結合

您可以結合路徑摘要計算結果,並沿路搜尋。在這種情況下,Text Search (新版) 會在回應中傳回前往每個地點的時間和距離,以及從每個地點到路線最終目的地的距離。

如何使用文字搜尋 (新版) 計算路線摘要,以及沿路搜尋:

  1. 使用 Routes API 計算路線,在回應中傳回路線折線

  2. 使用 searchAlongRouteParameters.polyline.encodedPolyline 參數將路線多邊形傳遞至 Text Search (新版),以便將搜尋結果偏向路線。回應就會包含符合搜尋條件且位於指定路線附近的地點。

  3. 在欄位遮罩中加入 routingSummaries,讓回應包含 routingSummaries 陣列。這個陣列包含路線起點到回應中各個地點的時間和距離。

根據預設,文字搜尋 (新版) 會沿著整個路線執行搜尋作業:

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 陣列則包含前往各個地點的時間和距離:

{
  "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 陣列中的每個項目,文字搜尋 (新版) 會傳回兩段航程的旅遊時間:

  • 第一段包含從出發地到目的地的行程時間和距離。在本例中,從起點到結果中第一個地點的時間和距離分別為 285 秒和 1616 公尺。

  • 第二段則包含從該地點到路線目的地的行程時間和距離。在這個範例中,時間和距離分別為 2466 秒和 58147 公尺。

指定路徑起點、交通方式和路線修改項目

您可以指定路徑起點、交通方式、路徑修改項目和路徑偏好設定,修改搜尋和路徑摘要計算結果。如同「指定移動選項」主題所述,在計算路線摘要時,運輸模式和路線修飾符的運作方式與未指定路線時相同。

根據預設,每個結果的第一段會包含多邊形定義的起點與各個地點的距離。不過,您可以在要求中明確指定路徑來源,藉此覆寫預設值。如果指定,所有回應的第一個路段會指定從指定路徑起點的距離和時間,覆寫多邊形的起點。

在下一個範例中,您將路線起點指定為加州聖馬刁的座標,並指定要避開收費路段,以及將結果數量設為 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'

下圖顯示地圖,其中包含路線折線、新起點 (淡藍色圖釘),以及搜尋結果中的地點 (綠色圖釘)。請注意,所有結果都沿著路線,但會經過 San Mateo:

更新來源的搜尋結果。