本指南从安全性、性能和消耗三个方面介绍了优化 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 费用(包括创建预算、修改配额和设置提醒),请参阅管理费用。