12

我正在使用以下方法来获取 GMSPlacesClient 类的输入字符串的自动完成结果:

- (void)autocompleteQuery:(NSString *)query
               bounds:(GMSCoordinateBounds * GMS_NULLABLE_PTR)bounds
               filter:(GMSAutocompleteFilter * GMS_NULLABLE_PTR)filter
             callback:(GMSAutocompletePredictionsCallback)callback

我尝试通过多种方式实现边界,但它们都不起作用,我想知道是否有任何标准方法可以使用 GMSCoordinateBounds 获得特定国家/地区的结果?

4

6 回答 6

34

您可以使用 Google autocomplete place api iOS SDK 获取特定国家/地区的结果。只需转到此链接

let filter = GMSAutocompleteFilter()
filter.type = .Establishment
filter.country = "UK"

将过滤器国家/地区设置为您想要的国家/地区代码。然后,这将为您仅获取特定国家/地区的结果。

您可以从此链接获取国家代码

希望这可以帮助。

于 2016-02-15T10:46:37.737 回答
4

在您的 google 地方 API 网址中,只需附加

 &components=country:sg 
here sg = country code for singapore. Append country code as per your requirement.

国家必须作为两个字符传递,ISO 3166-1 Alpha-2 兼容的国家代码。你可以参考不同国家的国家代码

于 2015-07-28T16:31:27.370 回答
4

这对我有用

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
          }
        }
      }
    }
于 2016-05-17T13:53:48.417 回答
0

看起来适用于 iOS 的 Google 自动完成 Places API 不支持按国家/地区过滤。GMSCoordinateBounds使用与两个角定义的矩形区域相对应的东北和西南边界。

使用Google Places API Web Service和过滤器可能更容易components=country:您可以指定您想要的国家/地区country:

于 2015-07-28T16:23:56.083 回答
0

国家代码的完整列表可以在这里找到:
https ://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

使用它:

let filter = GMSAutocompleteFilter()
filter.country = "YOURCountryCode"
于 2018-08-16T09:47:52.167 回答
0

Swift 5及更高版本中

您可以通过配置来自定义搜索GMSAutocompleteFilter,并从其属性中指定国家country

例子 :

let filter = GMSAutocompleteFilter()
filter.country = "MA"
autocompleteController.autocompleteFilter = filter

国家应该是 ISO 3166-1 Alpha-2 国家代码(不区分大小写)。

您可以从这里找到这些代码:国家 ISO 代码

于 2021-11-27T14:45:24.050 回答