计算路线摘要

如需使用文本搜索(新)附近搜索(新)来计算响应中每个地点的行程时长和距离,请执行以下操作:

  1. 在请求中传递 routingParameters.origin 参数,以指定路线起点的纬度和经度坐标。此参数是必需的,用于计算响应中每个地点的时长和距离。

  2. 在字段掩码中添加 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 对象,该对象包含从路线起点到相应地点的 durationdistanceMeters

{
  "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 参数将交通模式设置为 DRIVEBICYCLEWALKTWO_WHEELER。如需详细了解这些选项,请参阅可用于路线的车辆类型

  • 使用 routingParameters.routingPreference 属性将路由偏好设置选项设置为 TRAFFIC_UNAWARE(默认)、TRAFFIC_AWARETRAFFIC_AWARE_OPTIMAL。每种选项的数据质量和延迟时间各不相同。如需了解详情,请参阅指定是否以及如何纳入流量数据

    routingParameters.routingPreference 属性确实会影响预览版(GA 前)directionsUri 字段中包含的路线,因为 Google 地图会在打开链接时显示交通选项。

  • 使用 routingParameters.routeModifiers 属性可指定 avoidTollsavoidHighwaysavoidFerriesavoidIndoor。如需详细了解这些选项,请参阅指定要避开的路线特征

在下一个示例中,您将出行模式指定为 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 选项。

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

  2. (可选)修改请求参数。

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

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