将路线摘要与沿路线搜索相结合

您可以将路线摘要 计算与沿路线搜索 相结合。 在这种情况下,新版文本搜索功能会在响应中返回到达每个地点的行程时长和距离,然后返回从每个地点到路线最终目的地的行程时长和距离。

如需使用新版文本搜索功能计算路线摘要并沿路线搜索,请执行以下操作:

  1. 使用 Routes API 计算路线,并在响应中返回路线多段线。

  2. 使用 searchAlongRouteParameters.polyline.encodedPolyline 参数将路线多段线传递给新版文本搜索功能,以使搜索结果偏向于路线。然后,响应会包含符合搜索条件 且位于指定路线附近的地点。

  3. 在字段掩码中添加 routingSummaries,以便响应包含 routingSummaries 数组。此数组包含从路线起点到响应中每个地点的时长和距离 。

借助 APIs 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 数组(包含到达每个地点的时长和距离):

{
  "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'

下图显示了一张地图,其中包含路线多段线、新起点(浅蓝色图钉)和搜索结果中的地点(绿色图钉)。请注意,所有结果都位于路线沿线,但位于圣马特奥之后:

来自更新来源的搜索结果。

试试看!

借助 APIs Explorer,您可以发出示例请求,以便熟悉 API 和 API 选项。

  1. 选择页面右侧的 API 图标 api

  2. 您可以选择修改请求参数。

  3. 选择执行 按钮。在对话框中,选择您要用于发出请求的账号 。

  4. 在 APIs Explorer 面板中,选择全屏图标 fullscreen 以展开 APIs Explorer 窗口。