最佳化指南

本指南會針對安全性、效能與耗用量提供幾種最佳化 Google Maps API 用量的策略。

安全性

詳閱安全性最佳做法

API 金鑰是以專案為主的憑證,應將其視為使用者 ID 和密碼,採取同等的安全防範措施。請詳閱 API 安全性最佳做法,避免因不小心誤用金鑰而不當耗用配額,導致帳戶產生非預期的費用。

使用 API 金鑰存取 Maps API

我們建議以 API 金鑰做為存取 Google Maps API 時的驗證方式。雖然我們仍支援使用用戶端 ID,但 API 金鑰能提供更精細的安全控管機制,且可搭配特定網址、IP 位址和 Mobile SDK (Android 和 iOS) 使用。如要瞭解如何建立及保護 API 金鑰,請前往各個 API 或 SDK 的「使用 API 金鑰」頁面 (例如,針對 Maps JavaScript API,請前往其「使用 API 金鑰」頁面)。

成效

採用指數輪詢策略來處理錯誤

如果您的應用程式在短時間內嘗試呼叫 API 的次數過多,導致發生錯誤 (例如配額錯誤),不妨採用指數輪詢,以便系統處理要求。

指數輪詢最適合用於 500 層級錯誤。詳情請參閱處理 HTTP 傳回狀態碼

具體來說,請調整查詢速度。在程式碼中新增每次查詢的間隔等候時間 (S 秒);如果還是發生配額錯誤,請將等候時間延長一倍,再傳送下一個查詢。繼續調整等候時間,直到查詢未傳回錯誤為止。

隨需傳送使用者互動要求

內含使用者互動的 API 要求應隨需傳送;也就是說,等候使用者執行特定動作 (例如「on-click」) 來啟動 API 要求後,才根據結果載入地圖、設定目的地或顯示適當資訊。採用隨需模式可避免對 API 發出不必要的要求,從而降低 API 用量。

避免在地圖移動時顯示重疊內容

在使用者可能會移動地圖的時候,請避免透過 Draw() 方法在地圖上顯示自訂疊加層內容。這是因為使用者每次移動地圖,系統就會重新整理;這時如果在該地圖上疊加內容,可能會產生動作延遲或視覺效果不流暢的情況。因此,請務必只在使用者已停止平移或縮放時,才新增或移除地圖上的疊加層內容。

避免以 Draw 方法進行大量作業

一般而言,建議盡量避免在 Draw() 方法中使用需要大量效能的非繪圖操作。舉例來說,請避免在 Draw() 方法程式碼中:

  • 進行會傳回大量內容的查詢。
  • 針對顯示中的資料執行大量變更。
  • 操控許多文件物件模型 (DOM) 元素。

這些作業會降低效能,並在地圖算繪時造成延遲或視覺效果不流暢。

針對標記使用光柵圖片

新增標記時,可使用光柵圖片 (例如 .PNG 或 .JPG 格式的圖片) 在地圖上標示位置。請避免使用可擴充向量圖形 (SVG) 格式的圖片,因為在重新繪製地圖時算繪這種格式的圖片可能會導致延遲。

對標記進行最佳化處理

您可進行最佳化處理來將多個標記算繪為單一靜態元素,藉此提升效能;這個做法在需要使用大量標記時相當實用。根據預設,Maps JavaScript API 會決定是否對標記進行最佳化處理;若有大量標記,Maps JavaScript API 會嘗試在算繪標記時進行最佳化。不過,並不是所有的標記都能最佳化;在某些情況下,Maps JavaScript API 可能需要以不經最佳化處理的方式算繪標記。若您使用 GIF 動畫或 PNG 圖片,或是每一個標記都必須算繪成個別 DOM 元素,請停用最佳化算繪。

建立叢集以管理標記顯示方式

為協助您管理在地圖上用來標示位置的標記,請使用 Marker Clusterer 程式庫建立標記叢集。Marker Clusterer 程式庫提供下列選項:

  • 格線大小 - 指定叢集中標記群組的數量。
  • 最大縮放等級 - 指定顯示叢集時適用的最大縮放等級。
  • 圖片路徑 - 要當做標記圖示使用的圖形圖片所在路徑。

耗用量

如要瞭解如何管理 Google 地圖平台費用,包括建立預算、修改配額和設定快訊,請參閱「管理費用」一文。