计算路由摘要
如需使用文本搜索(新)或附近搜索(新)计算响应中每个地点的行程时长和距离,请执行以下操作:
-
在请求中传递
routingParameters.origin
参数,以指定路线起点的纬度和经度坐标。此参数是计算响应中每个地点的用时和距离所必需的。 -
在字段掩码中添加
routingSummaries
,以便响应包含routingSummaries
数组。此数组包含从路线起点到响应中每个地点的用时和距离。
使用文本搜索(新版)
在以下请求中,您可以计算文本搜索(新)响应中每个地点的旅行时长和距离:
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'
响应包含两个 JSON 数组:places
数组包含匹配的地点,routingSummaries
数组包含前往每个地点所需的时间和距离:
{ "places": [ { object (Place) } ] "routingSummaries": [ { object (RoutingSummary) } }
routingSummaries
数组中的每个元素都位于 places
数组中相应位置。也就是说,routingSummaries[0]
中的元素对应于 places[0]
中的位置。
routingSummaries
的数组长度与 places
的数组长度相同。如果某个地点的 routingSummary
不可用,则数组条目为空。
由于此示例会计算从路线起点到每个地点的时长和距离,因此响应中的 routingSummaries.legs
字段包含一个 Leg
对象,该对象包含从路线起点到地点的 duration
和 distanceMeters
。
{ "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 秒和 2607 米。
使用附近搜索
在此示例中,您将计算附近搜索响应中每个地点的旅行时长和距离。以下示例搜索澳大利亚悉尼的餐馆,并将地理位置限制和路线起点设置为相同的纬度和经度坐标:
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
参数将传输模式设置为DRIVE
、BICYCLE
、WALK
或TWO_WHEELER
。如需详细了解这些选项,请参阅路线的可用车辆类型。 -
使用
routingParameters.routingPreference
属性将路由偏好设置选项设置为TRAFFIC_UNAWARE
(默认)、TRAFFIC_AWARE
或TRAFFIC_AWARE_OPTIMAL
。每种选项的数据质量和延迟时间各不相同。如需了解详情,请参阅指定是否要包含流量数据以及如何包含。routingParameters.routingPreference
属性确实会影响“预览(GA 之前)”directionsUri
字段中包含的路线,因为 Google 地图在打开链接时会显示交通选项。 -
使用
routingParameters.routeModifiers
属性指定avoidTolls
、avoidHighways
、avoidFerries
和avoidIndoor
。如需详细了解这些选项,请参阅指定要避开的路线地图项。
在下例中,您将旅行模式指定为 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'