计算路线摘要
如需使用文本搜索(新)或附近搜索(新)来计算响应中每个地点的行程时长和距离,请执行以下操作:
-
在请求中传递
routingParameters.origin参数,以指定路线起点的纬度和经度坐标。此参数是必需的,用于计算响应中每个地点的时长和距离。 -
在字段掩码中添加
routingSummaries,以便响应包含routingSummaries数组。此数组包含从路线起点到响应中每个地点的时长和距离。
借助 API Explorer,您可以发出实时请求,以便熟悉 API 和 API 选项:
使用新版文本搜索功能
在以下请求中,您将计算“文本搜索(新)”响应中每个地点的出行时长和距离:
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'试试看!
借助 API Explorer,您可以发出示例请求,以便熟悉 API 和 API 选项。
选择页面右侧的 API 图标 api。
(可选)修改请求参数。
选择执行按钮。在对话框中,选择您要用于提出请求的账号。
在 APIs Explorer 面板中,选择全屏图标 fullscreen 以展开 APIs Explorer 窗口。