如何使用MapKit实现城市的自动完成功能?

时间:2016-07-25 13:10:21

标签: ios swift mapkit

我需要实现允许通过其第一个字符接收城市列表(未满)的方法。我以为我可以使用地址自动完成功能。

例如,我可以在Google API中执行此操作:https://maps.googleapis.com/maps/api/place/autocomplete/json?input=V&types=(cities)&language=pt_BR&key=YOUR_API_KEY 它返回5个城市(因为类型=城市),第一个字符为“V”。

但我在Apple的MapKit中没有这样的参数。如果我使用MKLocalSearchCompleter我只有

enum MKSearchCompletionFilterType : Int {
    case LocationsAndQueries
    case LocationsOnly
}

我如何解决这个问题并以第一个角色接收一些城市?谢谢!

2 个答案:

答案 0 :(得分:0)

MKLocalSearchCompleter是一个不错的选择。

基于MKLocalSearchCompletion结果,您可以从结果中搜索地址,并与MKLocalSearchRequest一起执行MKLocalSearch。这将为您提供可以映射到“城市”实体的结果,这些结果将按您的意愿显示。

此外,我在MKLocalSearchCompletion的标题中看到了一些基于逗号分隔符的方法,但由于它只是搜索结果的标题,因此您不应该依赖它。

答案 1 :(得分:0)

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

那是使用https://gsp-ssl.ls.apple.com/auto_complete.arpc

的类

其语法与MkLocalSearchRequest的语法非常相似:

MKLocalSearchCompleter.queryFragment = searchBar.text
MKLocalSearchCompleter.region = userlocation.region

但是要获得结果,您将需要侦听委托方法:

(void)completerDidUpdateResults:(MKLocalSearchCompleter *)completer;