为 Android 的地点自动完成 API 创建地点类型过滤器
Creating a place type filter for the Place Autocomplete API for Android
这个 API 似乎很新,所以这里没有太多关于它的问题,也没有很多教程。
我按照 Google 的教程进行操作,并在我的应用程序中使用了自动完成 Android api。我现在正在尝试使用 AutocompleteFilter 将我的结果限制在特定区域或特定类型的地方。
对于像我这样的初学者来说,似乎几乎没有文档解释该怎么做。
AutocompleteFilter 需要一个 Collection 对象。如何将以下值更改为整数?
问题由 Google 员工本人解决,我通过我们的 Maps for Work 支持门户联系了他。
这是一个位置类型列表及其对应的整数。
https://developers.google.com/android/reference/com/google/android/gms/location/places/Place
这些可用于过滤 Android 地点自动完成 API。
我还不能发表评论,所以我在这里添加对上面答案的警告:
并非所有来自 Place 的常量都可用于使用 AutocompleteFilter 进行过滤,Android 上只有两个可用:Place.TYPE_GEOCODE
和 Place.TYPE_ESTABLISHMENT
('address' 出现在文档中但没有在 Place
)
中作为常量
如果使用任何其他常量(例如 Place.TYPE_LOCALITY
),请求将导致此令人困惑的状态错误:
Status{statusCode=NETWORK_ERROR, resolution=null}
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;
根据您的要求,可以构建 AutocompleteFilter
。然后可以使用 setFilter()
将此过滤器应用于 IntentBuilder
。
例如:
如果您想将结果限制在特定国家/地区,您可以通过以下方式实现:
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setCountry("IN").build();
Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN).setFilter(typeFilter).build(this);
如果您想将结果限制为特定地点类型,您可以通过将过滤器更改为类似的方式来做到这一点:
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setTypeFilter(AutocompleteFilter.TYPE_FILTER_REGIONS).build();
这个 API 似乎很新,所以这里没有太多关于它的问题,也没有很多教程。
我按照 Google 的教程进行操作,并在我的应用程序中使用了自动完成 Android api。我现在正在尝试使用 AutocompleteFilter 将我的结果限制在特定区域或特定类型的地方。
对于像我这样的初学者来说,似乎几乎没有文档解释该怎么做。
AutocompleteFilter 需要一个 Collection 对象。如何将以下值更改为整数?
问题由 Google 员工本人解决,我通过我们的 Maps for Work 支持门户联系了他。
这是一个位置类型列表及其对应的整数。
https://developers.google.com/android/reference/com/google/android/gms/location/places/Place
这些可用于过滤 Android 地点自动完成 API。
我还不能发表评论,所以我在这里添加对上面答案的警告:
并非所有来自 Place 的常量都可用于使用 AutocompleteFilter 进行过滤,Android 上只有两个可用:Place.TYPE_GEOCODE
和 Place.TYPE_ESTABLISHMENT
('address' 出现在文档中但没有在 Place
)
如果使用任何其他常量(例如 Place.TYPE_LOCALITY
),请求将导致此令人困惑的状态错误:
Status{statusCode=NETWORK_ERROR, resolution=null}
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;
根据您的要求,可以构建 AutocompleteFilter
。然后可以使用 setFilter()
将此过滤器应用于 IntentBuilder
。
例如:
如果您想将结果限制在特定国家/地区,您可以通过以下方式实现:
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setCountry("IN").build(); Intent intent = new PlaceAutocomplete.IntentBuilder(PlaceAutocomplete.MODE_FULLSCREEN).setFilter(typeFilter).build(this);
如果您想将结果限制为特定地点类型,您可以通过将过滤器更改为类似的方式来做到这一点:
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder().setTypeFilter(AutocompleteFilter.TYPE_FILTER_REGIONS).build();