iOS - Apple Maps MKMapKit搜索位置无法正常运行

时间:2017-01-23 13:48:16

标签: ios location mapkit mklocalsearch mklocalsearchrequest

使用MKLocalSearch,Apple Maps MKMapKit搜索位置无法正常运行。

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

目前,MKLocalSearch请求结果有时会提供错误代码" loadingThrottled" ,但我们会在输入新搜索字符时取消之前的请求。

此外,MKLocalSearch仅为搜索字符串提供10个结果。

有什么办法可以改善这种位置搜索功能并以更好的方式提供自动填充功能吗?

根据苹果文档:

  

每个应用或开发者ID都没有请求限制,因此编写良好的应用程序正常运行应该不会遇到任何问题。但是,在编写效果不佳的应用程序中可能会出现限制,从而产生大量请求。   an implementation

1 个答案:

答案 0 :(得分:0)

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

  

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

<强>优势:

  • 与MKLocalSearch相比,提供最相关的结果。
  • 位置过滤器(MKSearchCompletionFilterType)可用。
  • 获得“loadingThrottled”错误的机会减少。
  • 约提供最多15个结果。(根据我迄今为止的经验。)

限制:

  • MKLocalSearchComplete未提供响应位置,仅提供位置名称&amp;地址。 (如果您想要位置,则需要创建MKLocalSearch对象&amp;将获得更多位置详细信息。)
  

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

参考: Apple API Reference: MKLocalSearchCompleter