0

Apple Maps MKMapKit 搜索位置无法使用 MKLocalSearch 正常工作。

我必须提供位置搜索功能,用户可以在其中输入输入,应用程序将建议匹配的结果,用户可以选择其中一个以将其显示在地图视图上,并从从所选结果条目中获取的位置获取地址详细信息。

目前 MKLocalSearch 请求结果有时会提供错误代码“loadingThrottled”,尽管我们正在取消先前的请求并输入新的搜索字符。

MKLocalSearch 也只提供 10 个搜索字符串的结果。

有什么方法可以改进此位置搜索功能并以更好的方式提供自动完成功能?

根据苹果文档:

每个应用程序或开发人员 ID 没有请求限制,因此编写良好且运行正常的应用程序应该不会遇到任何问题。但是,在创建大量请求的编写不佳的应用程序中可能会发生限制。 https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/EnablingSearch/EnablingSearch.html

4

1 回答 1

0

您应该使用MKLocalSearchCompleter来检索自动完成建议。与 MKLocalSearch 相比,它提供了最相关的结果。

MKLocalSearchCompleter 对象采用部分搜索字符串并生成潜在完成列表。您使用搜索完成器对象来检索您自己的基于地图的搜索控件的自动完成建议。

优势:

  • 提供与 MKLocalSearch 相比最相关的结果。
  • 位置过滤器(MKSearchCompletionFilterType)可用。
  • 出现“loadingThrottled”错误的机会较小。
  • 大约提供最多 15 个结果。(根据我到目前为止的经验。)

局限性:

  • MKLocalSearchComplete 不提供位置作为响应,仅提供位置名称和地址。(如果您想要位置,则必须创建 MKLocalSearch 对象并获得更多位置详细信息。)

当用户键入文本时,您将当前文本字符串输入到搜索完成器对象中,该对象提供匹配位置或兴趣点的可能的字符串完成。然后,您使用完整的搜索完成对象来创建 MKLocalSearch 对象并检索有关地理位置的更详细信息。

参考: Apple API 参考:MKLocalSearchCompleter

于 2017-01-25T13:28:15.937 回答