首页 > 解决方案 > GMSAutocompleteViewController 仅显示 5 个结果

问题描述

我在我的应用程序中集成了 GMSAutocompleteViewController

let autocompleteController = GMSAutocompleteViewController()
autocompleteController.delegate = self
let filter = GMSAutocompleteFilter()
filter.type = .address
autocompleteController.autocompleteFilter = filter

// Display the autocomplete view controller.
present(autocompleteController, animated: true, completion: nil)    

这始终只显示 5 个结果。此外,这种行为似乎有点奇怪。首先,当我在搜索中写J时,会显示 5 个结果。在编写更多文本并删除这些文本以再次将搜索文本设置为J后,我得到 -无法加载结果。然后结果永远不会显示,除非我重新启动我的应用程序。
我在 Android 中尝试了相同的实现,AutocompleteSupportFragment效果很好。在看到Ravi 的答案以及其他人的答案后,我早些时候想知道。但是,如果启用计费是解决方案,为什么它在不启用计费的情况下在 Android 中运行良好

标签: iosswiftgoogle-mapsgoogle-places

解决方案


我假设您启用了 Google Places API,并且您的 Google Developer Console 下对该项目没有应用程序限制。说有一个关于APIs and billing的谷歌页面

  1. Android 和 iOS Places API 可能不同,因此对于某些 API,您可能需要启用计费:

    某些 API 允许免费使用达到免费使用限制,并且在某些情况下,当您启用计费时,此免费限制会增加。

  2. 也许在您的 Android 应用程序中,您使用的 API 链接到已启用计费的项目,而对于您的 iOS 应用程序,您使用的 API 链接到未启用计费的另一个项目。

    计费在项目级别启用,而不是 API 级别。如果您为项目启用计费,则该项目中的每个可计费 API 都会根据项目的使用情况进行计费。项目中的所有使用均使用您指定的付款方式计费,您可以随时更改为其他方式。您不能选择性地为某些 API 启用计费,但不能为其他 API 启用;当您为项目启用计费时,它适用于您在该项目中使用的所有 API,即使该 API 当前已禁用。

也许某些东西与您在 Android 应用程序项目中使用的 Places SDK 版本有关,并且它的一些内部功能可能会影响您是否要与其更新的 API 版本交谈,这需要启用或不启用 Billing。检查迁移到 New Places SDK 客户端中所述的信息以了解此假设。

最后,正如 Google 在 Places SDK for Android、Places SDK for iOS、Places API 中的大量文档所述,它们在每篇文章的开头都有一个红色警告,说在每个项目中你应该启用 Billing。如果我之前的所有语句都失败了,这可能意味着他们在不同批次的用户/项目中应用了计费规则和 API 功能限制,因此您的 android 应用程序项目可能属于尚未推出的批次强制启用计费选项。


推荐阅读