2017-01-23 94 views
0

Apple地图MKMapKit搜索位置使用MKLocalSearch无法正常工作。iOS - Apple地图MKMapKit搜索位置无法正常工作

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

目前MKLocalSearch请求结果有时会提供错误代码“loadingThrottled”虽然我们使用输入的新搜索字符取消了先前的请求。

另外MKLocalSearch只为搜索到的字符串提供10个结果。

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

根据苹果文档:

有每个应用或开发者ID没有请求限制,使操作正确应不会出现问题写得很好的应用。但是,在编写不好的应用程序中可能会发生节流,从而产生极大数量的请求。 https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/LocationAwarenessPG/EnablingSearch/EnablingSearch.html

回答

0

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

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

优势:

  • 相比MKLocalSearch提供最相关的结果。
  • 位置过滤器(MKSearchCompletionFilterType)可用。
  • 获得“loadingThrottled”错误的机会较少。
  • 约可提供最大15个结果(根据我的经验到现在。)

限制:

  • MKLocalSearchComplete不提供响应的位置,只提供位置名称&地址。 (如果你想要的位置比你要创建MKLocalSearch对象&会得到更多的位置的详细信息。)

当用户键入文本,你给当前的文本串到搜索完成试验对象,它提供了可能的字符串匹配地点或兴趣点的完成项目。然后,您使用完全形成的搜索完成对象来创建MKLocalSearch对象并检索有关地理位置的更多详细信息。

参考:Apple API Reference: MKLocalSearchCompleter