【问题标题】:How to get country specific result with Google autocomplete place api ios sdk?如何使用 Google autocomplete place api ios sdk 获得特定国家/地区的结果?
【发布时间】:2015-10-19 03:28:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios google-maps google-places-api gmsplace


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在您的 Google Places API 网址中,只需附加

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

      国家/地区必须作为两个字符传递,与 ISO 3166-1 Alpha-2 兼容的国家/地区代码。可以参考Country code Of different countries

      【讨论】:

        【解决方案3】:

        您可以使用 Google autocomplete place api iOS SDK 获取特定国家/地区的结果。就去这个link

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

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

        您可以从此link获取国家代码

        希望这会有所帮助。

        【讨论】:

        • 嗨,在我的 iOS 版 Google 地图 SDK 中,它来自用 Objective C 编写的 pod。没有像“国家”这样的属性。任何建议。
        • filter.country = "AU" 不适合我。请帮帮我。
        • 让 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 { // 你的代码 } } } }
        • 你们可能想要删除 filter.type = .Establishment 行(或 .establishment 用于 swift 3+),因为这也仅根据 Google 的代码文档列出“业务结果”。
        • 拯救了这一天。谢谢。
        【解决方案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
                  }
                }
              }
            }
        

        【讨论】:

          【解决方案5】:

          可在此处找到国家/地区代码的完整列表:
          https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

          使用它:

          let filter = GMSAutocompleteFilter()
          filter.country = "YOURCountryCode"
          

          【讨论】:

            【解决方案6】:

            Swift 5 及更高版本中

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

            示例:

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

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

            您可以从这里找到这些代码:Countries ISO Codes

            【讨论】:

              猜你喜欢
              • 2016-06-29
              • 2017-08-28
              • 2013-10-02
              • 2017-08-05
              • 1970-01-01
              • 2014-08-21
              • 1970-01-01
              • 2020-11-08
              • 1970-01-01
              相关资源
              最近更新 更多