我通过采用苹果MKlocalSearch的这里示例代码中的大部分概念实现了一个实现
目前,对于自动完成,每次用户在搜索栏内输入时,我都会发送一个新的请求,其中我指定:
MkLocalSearchRequest.naturalLanguageQuery = searchBar.text
MkLocalSearchRequest.region = userlocation.region但与苹果的默认地图应用程序相比,我得到的响应与sever完全不同,如下图所示


然后,我捕捉到流量,发现我的请求去了https://gsp-ssl.ls.apple.com/search.arpc,而苹果的去了complete.arpc
有任何方法来调优MkLocalSearchRequest以获得相同的响应对象集吗?
发布于 2014-05-10 12:57:52
MkLocalSearchRequest不会在你的搜索字符串上执行自动完成,也许是因为苹果想限制第三方应用程序的请求数量。
理论上,您可以反向工程对complete.arpc的请求和响应,然后自己执行这些请求,根本不使用MkLocalSearchRequest。但这可能会导致应用程序在app上被拒绝。
发布于 2014-11-05 02:14:35
@TypingPanda -我没有足够的观点直接评论,但是:小心使用Google!虽然可能不是很明显,但Google的条款和条件规定,任何对Google位置数据的可视化表示都需要出现在Google上。希望一切顺利!
发布于 2017-04-14 19:48:35
从iOS 9.3开始,苹果就提供了MKLocalSearchCompleter。
MKLocalSearchCompleter对象接受部分搜索字符串,并生成可能完成的列表。使用搜索完成器对象检索基于地图的搜索控件的自动完成建议。
这是使用complete.arpc的类
它的语法与MkLocalSearchRequest非常相似。
MKLocalSearchCompleter.queryFragment = searchBar.text
MKLocalSearchCompleter.region = userlocation.region但是要获得结果,您需要侦听委托方法:
- (void)completerDidUpdateResults:(MKLocalSearchCompleter *)completer;https://stackoverflow.com/questions/21592255
复制相似问题