【问题标题】:Multiple Countries for Android AutocompleteFilterAndroid AutocompleteFilter 的多个国家
【发布时间】:2017-10-07 10:02:48
【问题描述】:

我的应用必须为 Google API 提供地点自动完成功能。 但应该只显示选定国家/地区的位置。 例如仅在美国和英国的地址。 这里是过滤器使用的代码片段:

AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
            .setTypeFilter(Place.TYPE_COUNTRY)
            .setCountry("US")
            .build();

有没有办法将 setCountry() 方法设置为多个县? 我试过 .setCountrie("US, UK") ...但这不起作用。

有什么想法吗?

【问题讨论】:

  • 你想只搜索特定的多个国家吗?
  • 也许您可以为每个国家/地区使用一个 AutoCompleteFilter,然后以某种方式组合结果?
  • 你试过用+分隔符吗?比如“美国+英国”。它适用于名称,也许它也适用于国家/地区
  • 分隔符不起作用。尝试组合过滤器甚至不起作用。
  • @Navinaut 你找到答案了吗?

标签: java android autocomplete


【解决方案1】:
AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
        .setTypeFilter(Place.TYPE_COUNTRY)
        .setCountry("my|country:ph|country:sg")
        .build();

这对我有用。 iOS SDK 设置是这样的。我就是这么知道的。

【讨论】:

    【解决方案2】:

    SDK 中添加了新方法setCountries()

    1. 确保将地方对 gradle 的依赖更新到最新(我这里使用的是 2.2.0)

    实现'com.google.android.libraries.places:places:2.2.0'

    1. 使用新方法,这里是一个使用意图的例子:

    Java

    Intent intent = new Autocomplete.IntentBuilder(
                    AutocompleteActivityMode.OVERLAY, fields)
                    .setCountries(Arrays.asList("FR", "IT"))
                    .build(this);
    startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE);
    

    科特林

    val intent = Autocomplete.IntentBuilder(
                 AutocompleteActivityMode.OVERLAY, fields)
                .setCountries(listOf("FR", "IT"))
                .build(this)
    startActivityForResult(intent, PLACE_AUTOCOMPLETE_REQUEST_CODE)
    

    注意:根据文档,请记住最多 五个 个国家/地区的自动填充结果

    【讨论】:

      【解决方案3】:

      这是一个老问题: 但对于那些仍然无法获得 .setCountries(Arrays.asList("DZ", "US")) 并且只得到 .setCountry("US") 确保在 gradle 中更新你的 place api 截至 2020 年 12 月 26 日,其版本为 2.4.0

      implementation 'com.google.android.libraries.places:places:2.4.0'
      

      【讨论】:

        【解决方案4】:

        你可以试试下面的代码。

        AutocompleteFilter autocompleteFilter = new AutocompleteFilter.Builder()
                    .setTypeFilter(Place.TYPE_COUNTRY)
                    .setCountry("US")
                    .setCountry("UK")
                    .build();
        

        【讨论】:

        • 不起作用,它使用最后一个传递给setCountry()方法的值
        猜你喜欢
        • 1970-01-01
        • 2020-03-10
        • 1970-01-01
        • 1970-01-01
        • 2020-06-08
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多