等时线 API 最佳实践

平滑度和保真度

您可以使用 polygon_fidelity 和 enable_smoothing 参数自定义输出多边形的外观和精度。虽然这些选项是独立的,但它们会共同决定最终的形状。

  • polygonFidelity (polygon_fidelity):分辨率。控制用于计算可达区域的基础空间网格单元的大小。

    • LOW:使用最大的网格单元(跨度为几百米)。 最适合覆盖大面积区域且不留间隙,并最大限度地减少顶点数量,从而形成一个通用形状,但可能会高估沿狭窄道路走廊的可达区域。
    • MEDIUM:在精度和载荷大小之间取得平衡。
    • HIGH:使用最小的网格单元格(大约 100-150 米宽)。这样可以更紧密地贴合道路网络,顶点更多,但可能会在道路网络稀疏的地方产生内部空洞。
    • 默认 (POLYGON_FIDELITY_UNSPECIFIED):如果未指定,服务会根据出行方式和时长自动选择分辨率,对于短时长和 WALK 使用更精细的单元格,对于长时长使用更粗略的单元格。如需比较不同时长或出行方式的等时线,请明确设置 polygonFidelity,以便它们使用相同的分辨率。

    单元格大小为近似值。系统可能会进一步泛化非常大的等时圈,以使响应大小可控。

  • enableSmoothing (enable_smoothing):美学。控制是否对保真度定义的网格单元的阶梯边缘进行圆角处理。
    • false(原始):返回与网格对齐的边界。边缘呈现锯齿状或阶梯状,反映了网格单元。最适合分析准确性,例如严格的点在多边形内测试。
    • true(平滑):对角进行圆角处理,同时大致保留每个环的面积。最适合在地图上直观显示。 由于边界不再遵循网格单元,因此请勿将其用于严格的点在多边形内测试。

它们如何交互:保真度设置平滑算法所作用的基准细节。

  • 高保真度 + 平滑处理:生成一个细节丰富、看起来很自然的形状,该形状会紧密贴合道路尽头。
  • 低保真度 + 平滑:生成宽泛、概括的“斑点”形状。

载荷大小和渲染

大型等时圈(尤其是具有 HIGH 保真度的长时间请求)可能包含数万个坐标,未压缩的 JSON 响应可能达到数百 KB 或更多。

  • 带宽:请注意,对于高保真度的最长时长请求,JSON 响应大小会很大。
  • 渲染:渲染极其详细的多边形会影响客户端性能。如需减少顶点数和载荷大小,请选择 polygonFidelity: MEDIUM 或 LOW,或者在渲染之前使用 Douglas-Peucker 等线简化算法简化客户端上的几何图形。

延迟时间和客户端超时

响应延迟时间会随着所遍历道路网络的规模而增加:短时长以及 WALK 和 BICYCLE 模式最快,而长 DRIVE 和 TWO_WHEELER 请求(尤其是使用 TRAFFIC_AWARE 时)耗时最长。

  • 建议的客户端超时:将 HTTP 或 gRPC 客户端截止时间配置为至少 30 秒,这样长时间运行的请求就不会因客户端超时时间过短而提前中止。

错误处理

针对 429 RESOURCE_EXHAUSTED 速率限制响应和 5xx 服务器错误,实现具有指数退避算法和抖动的重试逻辑。在不更改请求的情况下,请勿重试 400、403 或 404 客户端错误:

  • INVALID_ARGUMENT (400):检查 travelDuration 是否介于 1s 和 3600s(DRIVE/TWO_WHEELER)或 7200s(WALK/BICYCLE)之间,location 是否未省略且不为 (0, 0)(或 place 是有效的地点 ID),以及 TRAFFIC_AWARE 是否仅与 DRIVE 或 TWO_WHEELER 一起使用。省略的 latitude 或 longitude 会被视为 0.0,因此仅省略其中一个通常不会导致 400 错误(除非另一个值也是 0.0)。如果等时线出现在错误的位置,请仔细检查这两个值。
  • PERMISSION_DENIED (403):验证您的 API 密钥或 OAuth 令牌是否已包含在内,以及您的 Google Cloud 项目是否已启用 Isochrones API 和结算功能。
  • NOT_FOUND (404):place 无法解析为地点,或者起点无法吸附到出行方式可用的附近道路(大约 200 米以内,WALK 和 BICYCLE 的距离更短)。
  • RESOURCE_EXHAUSTED (429):您的项目超出了每分钟请求配额(默认 300 QPM)。请使用指数退避算法重试。