遷移作業總覽

本指南會說明傳統地點服務和新 Place 類別之間的主要差異。升級至 Place 類別可帶來許多優勢,包括改善效能和採用新的定價模式。如要充分運用 Places,並確保應用程式保持最新狀態,請熟悉本指南中詳述的變更。

啟用 Places API

Place 類別會依賴 Places API 服務。如要使用新 Place 類別的功能,您必須先在 Google Cloud 專案中啟用 Places API (新版)。詳情請參閱入門指南

一般變更

下表列出 PlacesServicePlace 之間的一些主要差異:

PlacesService (舊版) Place (新版)
方法必須使用回呼來處理結果物件和 google.maps.places.PlacesServiceStatus 回應。 使用 Promise,並以非同步方式運作。
方法需要 PlacesServiceStatus 檢查。 不需要進行狀態檢查,可以使用標準錯誤處理。
地點資料欄位的格式為蛇形命名法。 Place 資料欄位的格式為駝峰式大小寫。
僅限於固定的地點類型地點資料欄位 提供定期更新的地點類型地點資料欄位的擴充選項。

API 專屬變更

「地點」類別提供 API,方便您使用 Places 程式庫,並支援 Promise 等新型使用模式。Place 類別會公開與舊版 Places Service 相同的地點資料欄位和地點類型,並包含許多地點資料欄位和地點類型的新值。

下表說明 Places 服務的功能與 Place 類別的功能對應關係:

地點服務 (舊版) 地點類別 (新版)
地點資料欄位 地點類別資料欄位
地點類型 地點類型
PlacesService.findPlaceFromQuery() Place.searchByText()
PlacesService.findPlaceFromPhoneNumber() Place.searchByText()
PlacesService.textSearch() Place.searchByText()
PlacesService.nearbySearch() Place.searchNearby()
PlacesService.getDetails() Place.fetchFields()
Places.AutocompletionRequest Places.AutocompleteRequest
Places.AutocompletePrediction Places.PlacePrediction
Autocomplete 類別 PlaceAutocompleteElement 類別
SearchBox 類別 ---

載入 Places 程式庫

應用程式載入 Places 程式庫的方式取決於使用的 Bootstrap 載入器。如果應用程式使用動態程式庫匯入,您可以在執行階段載入所需的程式庫,方法是使用 await 運算子呼叫 importLibrary(),如下所示:

const { Place } = await google.maps.importLibrary("places");

如果您的應用程式使用直接指令碼載入標記,請在載入器指令碼中要求 places 程式庫:

<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>

如要進一步瞭解如何載入 Maps JavaScript API,請參閱本文

本節提供以下指南,協助您將應用程式遷移至使用最新版本的 Places API: