迁移概览
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
本指南重点介绍了旧版 Places 服务与新版 Place 类之间的主要区别。升级到 Place 类可带来显著优势,包括性能提升和新的价格模式。为了充分利用 Places 并确保您的应用保持最新状态,请熟悉本指南中详述的变更。
迁移结算方面的最佳实践
warning_amber
如果您的 API 用量足够高,可以采用第二级定价,则此指南适用。迁移到较新版本的 API 时,您还需要为不同的 SKU 付费。为避免在过渡当月增加费用,我们建议您在尽可能接近月初时切换到生产环境中的新 API。这样可确保您在迁移月份达到最具成本效益的月度价格层级。如需了解价格层级,请参阅价格页面和价格常见问题解答。
启用 Places API
地点类依赖于 Places API 服务。如需使用新 Place 类的功能,您必须先在 Google Cloud 项目中启用 Places API(新)。如需了解详情,请参阅入门指南。
大致变化
下表列出了 PlacesService
和 Place
之间的一些主要区别:
特定于 API 的更改
Place 类提供了一个 API,用于使用地点库,还支持 promise 等新型使用模式。Place 类公开的地点数据字段和地点类型与旧版 Places 服务相同,并且包含许多新的地点数据字段值和地点类型值。
下表显示了 Places 服务的各项功能与 Place 类的各项功能之间的对应关系:
加载 Places 库
应用加载 Places 库的方式取决于所使用的引导加载程序。如果您的应用使用动态库导入,您可以使用 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:
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-31。
[null,null,["最后更新时间 (UTC):2025-08-31。"],[],[],null,["# Migration overview\n\n\u003cbr /\u003e\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nThis guide highlights key differences between the legacy\nPlaces Service and the new\nPlace class. Upgrading to the\nPlace class offers significant advantages,\nincluding improved performance and a new [pricing model](/maps/documentation/javascript/usage-and-billing#places-js-library).\nTo get the most out of Places and ensure your apps are up-to-date, familiarize\nyourself with the changes detailed in this guide.\n\n\nBilling best practices for migration\n------------------------------------\n\nwarning_amber\n\nThis guidance applies if your API usage is high enough to\nmove into second-tier pricing. When migrating to a newer version of an API,\nyou're also being billed for a different SKU. To avoid increased costs during the month of\nyour transition, we recommend switching to the new APIs in production as close to the\nbeginning of the month as possible. This will ensure that you reach the most cost-effective\nmonthly pricing tiers during the migration month. For information about pricing tiers,\nsee the [pricing page](/maps/billing-and-pricing/pricing)\nand the [pricing FAQ](/maps/billing-and-pricing/faq).\n\n\u003cbr /\u003e\n\nEnable Places API\n-----------------\n\nThe Place class relies on the Places API service.\nTo use the features of the new Place class, you\nmust first enable Places API (New) in your Google Cloud project. For more\ninformation, see [Get started](/maps/documentation/javascript/place-get-started).\n\nGeneral changes\n---------------\n\nThe following table lists some of the main differences between `PlacesService`\nand `Place`:\n\n| [`PlacesService`](/maps/documentation/javascript/reference/places-service) (Legacy) | [`Place`](/maps/documentation/javascript/reference/place) (New) |\n|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Methods require the use of a callback to handle the results object and `google.maps.places.PlacesServiceStatus` response. | Uses Promises, and works asynchronously. |\n| Methods require a `PlacesServiceStatus` check. | No required status check, can use standard error handling. |\n| [Place data fields](/maps/documentation/javascript/place-data-fields) are formatted using snake case. | [Place data fields](/maps/documentation/javascript/place-class-data-fields) are formatted using camel case. |\n| Limited to a fixed set of [place types](/maps/documentation/javascript/supported_types) and [place data fields](/maps/documentation/javascript/place-data-fields). | Provides an expanded selection of regularly updated [place types](/maps/documentation/javascript/place-types) and [place data fields](/maps/documentation/javascript/place-class-data-fields). |\n\nAPI-specific changes\n--------------------\n\nThe Place class provides an API for using the Places library, and supports\nmodern usage patterns such as Promises. The Place class exposes the same place\ndata fields and place types as the legacy Places Service, and includes many new\nvalues for place data fields and place types.\n\nThis table shows how features of the Places Service\nmap to those of the Place class:\n\n| Places Service (Legacy) | Place Class (New) |\n|----------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|\n| [Place Data Fields](/maps/documentation/javascript/place-data-fields) | [Place Class Data Fields](/maps/documentation/javascript/place-class-data-fields) |\n| [Place Types](/maps/documentation/javascript/supported_types) | [Place Types](/maps/documentation/javascript/place-types) |\n| [`PlacesService.findPlaceFromQuery()`](/maps/documentation/javascript/reference/places-service#PlacesService.findPlaceFromQuery) | [`Place.searchByText()`](/maps/documentation/javascript/reference/place#Place.searchByText) |\n| [`PlacesService.findPlaceFromPhoneNumber()`](/maps/documentation/javascript/reference/places-service#PlacesService.findPlaceFromPhoneNumber) | [`Place.searchByText()`](/maps/documentation/javascript/reference/place#Place.searchByText) |\n| [`PlacesService.textSearch()`](/maps/documentation/javascript/reference/places-service#PlacesService.textSearch) | [`Place.searchByText()`](/maps/documentation/javascript/reference/place#Place.searchByText) |\n| [`PlacesService.nearbySearch()`](/maps/documentation/javascript/reference/places-service#PlacesService.nearbySearch) | [`Place.searchNearby()`](/maps/documentation/javascript/reference/place#Place.searchNearby) |\n| [`PlacesService.getDetails()`](/maps/documentation/javascript/reference/places-service#PlacesService.getDetails) | [`Place.fetchFields()`](/maps/documentation/javascript/reference/place#Place.fetchFields) |\n| [`Places.AutocompletionRequest`](/maps/documentation/javascript/reference/places-autocomplete-service?db=wfrench#AutocompletionRequest) | [`Places.AutocompleteRequest`](/maps/documentation/javascript/reference/autocomplete-data#AutocompleteRequest) |\n| [`Places.AutocompletePrediction`](/maps/documentation/javascript/reference/places-autocomplete-service#AutocompletePrediction) | [`Places.PlacePrediction`](/maps/documentation/javascript/reference/autocomplete-data#PlacePrediction) |\n| [`Autocomplete`](/maps/documentation/javascript/reference/places-widget#Autocomplete) class | [`PlaceAutocompleteElement`](/maps/documentation/javascript/reference/places-widget#PlaceAutocompleteElement) class |\n| [`SearchBox`](/maps/documentation/javascript/reference/places-widget#SearchBox) class | --- |\n\nLoad the Places library\n-----------------------\n\nHow your app loads the Places library depends on which bootstrap loader is in\nuse. If your app uses [dynamic library import](/maps/documentation/javascript/load-maps-js-api#dynamic-library-import),\nyou can load the needed libraries at runtime by using the `await` operator to\ncall `importLibrary()`, as shown here: \n\n const { Place } = await google.maps.importLibrary(\"places\");\n\nIf your app uses the [direct script loading tag](/maps/documentation/javascript/load-maps-js-api#use-legacy-tag),\nrequest the `places` library in the loader script:\n\n\n```html\n\u003cscript async\n src=\"https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap\"\u003e\n\u003c/script\u003e\n```\n\n\u003cbr /\u003e\n\n[Learn more about loading the Maps JavaScript API.](/maps/documentation/javascript/load-maps-js-api)\n\nThis section includes the following guides to help you migrate your apps to use\nthe newest version of the Places API:\n\n- [Migrate to Place Details](/maps/documentation/javascript/places-migration-details)\n- [Migrate to Text Search (New)](/maps/documentation/javascript/places-migration-search)\n- [Migrate to Nearby Search (New)](/maps/documentation/javascript/places-migration-nearby)\n- [Migrate to Place Photos](/maps/documentation/javascript/places-migration-photos)\n- [Migrate to Place Reviews](/maps/documentation/javascript/places-migration-reviews)\n- [Migrate to Place Autocomplete](/maps/documentation/javascript/places-migration-autocomplete)"]]