将路线摘要与沿路线搜索功能结合使用
您可以将路线摘要计算与沿路线搜索结合使用。 在这种情况下,文本搜索(新)会返回响应中每个地点的出行时长和距离,以及从每个地点到路线最终目的地的出行时长和距离。
如需使用新版文本搜索功能计算路线摘要以及沿路线搜索,请执行以下操作:
-
使用 Routes API 计算一条在响应中返回路线多段线的路线。
-
使用
searchAlongRouteParameters.polyline.encodedPolyline
参数将路线折线传递给 Text Search (New),以使搜索结果偏向于该路线。然后,响应会包含符合搜索条件且位于指定路线附近的地点。 -
在字段掩码中添加
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
数组(包含前往每个地点的时长和距离):
{ "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
数组中的每个条目,Text Search (New) 会返回两段行程时间:
-
第一段包含从出发地到该地点的出行时长和距离。在此示例中,从起点到结果中第一个地点的时长和距离分别为 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'
下图显示了一张地图,其中包含路线多段线、新的出发地(浅蓝色图钉)以及搜索结果中的地点(绿色图钉)。请注意,所有结果都位于路线沿途,但都位于圣马特奥之后:

试试看!
借助 API Explorer,您可以发出示例请求,以便熟悉 API 和 API 选项。
选择页面右侧的 API 图标 api。
(可选)修改请求参数。
选择执行按钮。在对话框中,选择您要用于提出请求的账号。
在 APIs Explorer 面板中,选择全屏图标 fullscreen 以展开 APIs Explorer 窗口。