我使用下面的方法来获得GMSPlacesClient类输入字符串的自动完成结果:
- (void)autocompleteQuery:(NSString *)query
bounds:(GMSCoordinateBounds * GMS_NULLABLE_PTR)bounds
filter:(GMSAutocompleteFilter * GMS_NULLABLE_PTR)filter
callback:(GMSAutocompletePredictionsCallback)callback
我试图通过多种方式实现边界,但没有一个工作,我想知道是否有任何标准的方法来获得国家特定的结果与GMSCoordinateBounds?
您可以使用Google autocomplete place api iOS SDK获得特定国家/地区的结果。直接到这个链接
let filter = GMSAutocompleteFilter()
filter.type = .Establishment
filter.country = "UK"
将过滤器国家设置为您想要的任何国家代码。这将只为您获取特定国家/地区的结果。
您可以从这个链接获得国家代码
希望这对你有帮助。
在你的google places API url中,只需添加
&components=country:sg
here sg = country code for singapore. Append country code as per your requirement.
国家必须以两个字符的方式传递,ISO 3166-1 Alpha-2兼容的国家代码。您可以参考不同国家的国家代码
这个适合我
let placesClient = GMSPlacesClient()
let filter = GMSAutocompleteFilter()
filter.type = .Establishment
filter.country = "SG"
placesClient.autocompleteQuery(searchString, bounds: nil, filter: filter) { (results, error:NSError?) -> Void in
self.resultsArray.removeAll()
if let _ = results {
for result in results!{
if let res: GMSAutocompletePrediction = result {
// your code
}
}
}
}
Swift 5及后续
您可以通过配置GMSAutocompleteFilter
自定义搜索,并从其属性country
指定国家
的例子:
let filter = GMSAutocompleteFilter()
filter.country = "MA"
autocompleteController.autocompleteFilter = filter
国家应该是ISO 3166-1 Alpha-2国家代码(不区分大小写)。
你可以从这里找到这些代码:国家ISO代码
看起来谷歌iOS的自动补全位置API不支持按国家过滤。GMSCoordinateBounds
使用两个角所定义的矩形区域对应的东北和西南边界。
它可能更容易使用谷歌的地方API网络服务和过滤器与components=country:
你可以指定你想要的country:
后的国家
完整的国家代码列表可以在这里找到:
https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
与:
连用let filter = GMSAutocompleteFilter()
filter.country = "YOURCountryCode"