优化指南

本指南从安全性、性能和消耗三个方面介绍了优化 Google 地图各 API 用量的几种策略。

安全性

查看安全性最佳实践

API 密钥是以项目为中心的凭据,为其采取的预防措施应与用户 ID 和密码相同。请参阅 API 安全性最佳实践来保管您的密钥,以防误用。误用可能会导致配额过度使用,使您的账号产生意外费用。

使用 API 密钥访问 Google 地图的各个 API

API 密钥是访问 Google 地图 API 的首选身份验证方法。虽然我们仍支持使用客户端 ID,但 API 密钥支持更精细的安全控制措施,并且经过调整后可与特定网址、IP 地址和移动 SDK(Android 和 iOS)配合使用。如需了解如何创建及保管 API 密钥,请前往各个 API 或 SDK 所对应的“使用 API 密钥”页面。例如,如果您使用的是 Maps JavaScript API,请访问该 API 对应的使用 API 密钥页面。

性能

使用指数退避算法处理错误

如果应用因短时间内尝试调用 API 的次数过多而出现错误(如配额错误),请考虑使用指数退避算法来处理请求。

指数退避算法最适合处理 500 系列错误。如需了解详情,请参阅处理 HTTP 返回状态代码一文。

具体而言,您可以调整查询频率。在代码中,在查询之间添加 S 秒的等待期。如果查询仍导致配额错误,请将等待期延长一倍,然后再发送另一个查询。您可以不断调整等待期,直到查询不再返回错误为止。

按需发送用户互动请求

您应仅按需向 API 发送包含用户互动的请求。也就是说,您需要等到最终用户执行某项操作(例如 on-click)后再发起 API 请求,然后根据结果来加载地图、设置目的地或显示适当的信息。采用这种按需发送的方法可避免向 API 发出不必要的请求,从而减少 API 消耗。

避免在地图移动时显示叠加层内容

如果用户正在移动地图,请不要使用 Draw() 方法在地图上显示自定义叠加层内容。每次用户移动地图时,系统都会重新绘制地图,此时如果在地图上放置叠加层内容,可能会导致延迟或视觉卡顿。请仅在用户停止平移或缩放后,才在地图上添加或从中移除叠加层内容。

避免在 Draw 方法中执行密集型操作

一般来说,最好不要在 Draw() 方法中执行对性能要求较高的非绘制操作。例如,请避免在 Draw() 方法的代码中执行以下操作:

  • 使用会返回大量内容的查询。
  • 对当前显示的数据进行多项更改。
  • 处理多个文档对象模型 (DOM) 元素。

这些操作可能会降低性能,并在渲染地图时造成延迟或视觉卡顿。

使用光栅图片作为标记

在地图上添加标记来标识位置时,请使用光栅图片,例如 .PNG 或 .JPG 格式的图片。请不要使用可缩放矢量图形 (SVG) 格式的图片,因为在重新绘制地图时,渲染 SVG 图片可能会导致延迟。

优化标记

您可以将多个标记渲染为单个静态元素,从而对标记进行优化,以提高性能。在需要大量标记的情况下,这种方法非常实用。默认情况下,Maps JavaScript API 会决定是否优化标记。如果存在大量标记,Maps JavaScript API 会尝试在渲染标记时对标记进行优化,但并非所有标记都可以优化。有时,Maps JavaScript API 可能需要在不优化标记的情况下渲染标记。如果您使用了动画 GIF 或 PNG,或者必须将每个标记渲染为单独的 DOM 元素,请停用优化型渲染。

创建聚类来管理标记显示

为方便管理标记(用于在地图上标识位置)的显示,您可以使用标记聚类器库来创建标记聚类。标记聚类器库包含以下选项:

  • 网格大小:用于指定要组合到一个聚类中的标记数量。
  • 最大缩放级别:用于指定显示该聚类时可达到的最大缩放级别。
  • 图片路径:用于指定要用作标记图标的图形图片。

消耗

如需了解如何管理 Google Maps Platform 费用(包括创建预算、修改配额和设置提醒),请参阅管理费用