迁移概览

本指南重点介绍了旧版地点服务与新版地点类之间的主要区别。升级到酒店类会带来显著优势,包括提升了性能和采用了新的定价模式。为了充分利用地点,并确保您的应用是最新版本,请熟悉本指南中详述的变更。

迁移的结算最佳实践

如果您的 API 用量足够高,达到了第二层级的价格,则适用此指南。迁移到较新版本的 API 时,您还需要按其他 SKU 付费。为避免在过渡月份增加费用,我们建议您尽可能在月初切换到正式版中的新 API。这样可以确保您在迁移月份达到最具成本效益的每月价格层级。如需了解价格层级,请参阅价格页面价格常见问题解答

启用 Places API

Place 类依赖于 Places API 服务。如需使用新版地点类的功能,您必须先在 Google Cloud 项目中启用 Places API(新)。如需了解详情,请参阅使用入门

大致变化

下表列出了 PlacesServicePlace 之间的一些主要区别:

PlacesService(旧版) Place(新)
方法需要使用回调来处理结果对象和 google.maps.places.PlacesServiceStatus 响应。 使用 Promise,并以异步方式运行。
方法需要进行 PlacesServiceStatus 检查。 无需状态检查,可以使用标准错误处理。
地点数据字段采用蛇形命名法。 地点数据字段采用驼峰式格式。
仅限于一组固定的地点类型地点数据字段 提供定期更新的地点类型地点数据字段的更广泛选择。

特定于 API 的更改

Place 类提供了一个 API,用于使用地点库,还支持 promise 等新型使用模式。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 库的方式取决于所使用的引导加载器。如果您的应用使用动态库导入,您可以使用 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: