您可以将“路由摘要”计算与“沿路线搜索”结合使用。 在这种情况下,文本搜索(新)会返回每个文本搜索的行程时长和距离, 然后从每个位置一直到最终目的地, 。
使用文本搜索(新)来计算路线摘要以及搜索 路线沿途:
使用 Routes API 计算路线,并在响应中返回路线多段线。
使用
searchAlongRouteParameters.polyline.encodedPolyline
参数执行以下操作: 将路线多段线传递到文本搜索(新)以偏向搜索结果 路径。然后,响应中包含符合搜索条件的地点 并且也位于指定路线附近。在字段掩码中添加
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": "1477 Plymouth St suite c, Mountain View, CA 94043, USA", "priceLevel": "PRICE_LEVEL_INEXPENSIVE", "displayName": { "text": "Zareen's", "languageCode": "en" } }, { "formattedAddress": "2464 W El Camino Real C, Mountain View, CA 94040, USA", "priceLevel": "PRICE_LEVEL_INEXPENSIVE", "displayName": { "text": "Veggie Garden", "languageCode": "en" } }, … ], "routingSummaries": [ { "legs": [ { "duration": "285s", "distanceMeters": 1616 }, { "duration": "2466s", "distanceMeters": 58147 } ] }, { "legs": [ { "duration": "696s", "distanceMeters": 4704 }, { "duration": "2787s", "distanceMeters": 58901 } ] }, … ] }
对于 legs
数组中的每个条目,文本搜索(新)都会返回两段式行程时间:
第一段路程包含从起点到终点的行程时长和距离 位置。在此示例中,从起点到结果中第一地点的时长和距离分别为 285 秒和 1616 米。
第二段包含从相应地点到路线目的地的行程时长和距离。在此示例中,时长和距离分别为 2466 秒和 58147 米。
指定路由起点、出行方式和路线修饰符
您可以通过指定路线起点、出行方式、路线修饰符和路线偏好设置来修改搜索和路线摘要计算方式。如指定出行方式中所示,在计算路线摘要时,使用出行方式和路线修饰符的方式与不指定路线时相同。
默认情况下,每条结果的第一段包含距原点的距离 通过多段线定义到各个位置。不过,您可以替换该默认值 在请求中明确指定路由来源。如果指定,则第一个 所有响应的 leg 指定从指定的 路线起点,覆盖多段线中的起点。
在下例中,您将路线起点指定为加利福尼亚州圣马特奥的坐标,指定避开收费站,并将结果数量设置为 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 之后: