首页 文章

为Android的地方自动填充API创建地方类型过滤器

提问于
浏览
3

这个API似乎相当新,因此这里没有太多关于它的问题,也没有很多教程 .

我跟着Google 's tutorial and got the Autocomplete Android api working in my app. I' m现在尝试使用 AutocompleteFilter 将我的结果限制在某个地区或某些类型的地方 .

对于像我这样的初学者来说,似乎没有什么文档可以解释做什么 .

AutocompleteFilter需要Collection对象 . 如何将以下值更改为整数?

https://developers.google.com/places/supported_types#table3

4 回答

  • 6

    我还不能评论所以我在这里添加一个警告,上面的答案:

    并非所有来自Place的常量都可用于使用AutocompleteFilter进行过滤,在Android上只有两个可用: Place.TYPE_GEOCODEPlace.TYPE_ESTABLISHMENT ('address'出现在文档中但在 Place 中不是常量)

    如果使用任何其他常量(例如 Place.TYPE_LOCALITY ),请求将导致此混乱状态错误:

    Status{statusCode=NETWORK_ERROR, resolution=null}
    
  • 4

    我通过Google Map 工作支持门户网站联系了Google员工,解决了问题 .

    这是一个地方类型列表及其整数对应物 .

    https://developers.google.com/android/reference/com/google/android/gms/location/places/Place

    这些可用于过滤Android Place Autocomplete API .

  • 3

    根据您的要求,可以构建 AutocompleteFilter . 然后可以使用 setFilter() 将此过滤器应用于 IntentBuilder .

    例如:

    • 如果要将结果限制为特定国家/地区,可以通过以下方式执行此操作:
    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setCountry("IN").build();
    
    Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN).setFilter(typeFilter).build(this);
    
    • 如果要将结果限制为特定的地点类型,可以通过将Filter更改为以类似的方式执行此操作:
    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setTypeFilter(AutocompleteFilter.TYPE_FILTER_REGIONS).build();
    
  • 4

    Android Place Autocomplete不支持上一个答案中提供的link枚举的所有类型 .

    自v8.4发布以来,受支持的类型由AutocompleteFilter提供,如here所述 .

    // AutocompleteFilter
    public static final int TYPE_FILTER_NONE = 0;
    public static final int TYPE_FILTER_GEOCODE = 1007;
    public static final int TYPE_FILTER_ADDRESS = 2;
    public static final int TYPE_FILTER_ESTABLISHMENT = 34;
    public static final int TYPE_FILTER_REGIONS = 4;
    public static final int TYPE_FILTER_CITIES = 5;
    

相关问题