平滑度和保真度
您可以使用 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)。请使用指数退避算法重试。