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

时间:2015-06-09 07:02:56

标签: android autocomplete google-places-api

这个API似乎相当新,所以这里没有太多问题,也没有很多教程。

我按照Google的教程,在我的应用中使用了Autocomplete Android api。我现在正尝试使用 AutocompleteFilter 将结果限制在某个地区或某些类型的地方。

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

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

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

4 个答案:

答案 0 :(得分:6)

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

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

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

Status{statusCode=NETWORK_ERROR, resolution=null}  

答案 1 :(得分:5)

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

例如:

  1. 如果您想将结果限制在特定国家/地区,可以通过以下方式执行此操作:

    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setCountry("IN").build();
    
    Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN).setFilter(typeFilter).build(this);
    
  2. 如果您想将结果限制为特定地点类型,您可以通过将过滤器更改为以类似方式执行此操作:

    AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setTypeFilter(AutocompleteFilter.TYPE_FILTER_REGIONS).build();
    

答案 2 :(得分:4)

问题由我通过Google地址工作支持门户联系的Google员工解决。

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

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

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

答案 3 :(得分:3)

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;