如何使用Android Places API AutocompleteFilter

我试图在我的应用程序中实现Android的新Places API,我似乎无法弄清楚如何设置filter的请求。 这是我的代码。

LatLng southWest = new LatLng(85, -180); LatLng northEast = new LatLng(-85, 180); LatLngBounds bounds = new LatLngBounds(southWest, northEast); AutocompleteFilter filter = AutocompleteFilter.create(WHAT SHOULD GO HERE?); PendingResult result = Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, search.getText().toString(), bounds, filter); 

正如你可以看到我遵循谷歌提供的文档在这里,但我没有谈到如何实现filter,阅读API参考后,我仍然不知道如何实现API。

我需要帮助搞清楚应该作为API的AutocompleteFilter.create()的参数。 我想按城市过滤数据

谢谢

Solutions Collecting From Web of "如何使用Android Places API AutocompleteFilter"

它适用于Google Play服务9.4。

 AutocompleteFilter filter = new AutocompleteFilter.Builder() .setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES) .build(); 

从文档:

表3:支持自动填充请求的types

您可以通过传递types参数来限制“自动填充完成”请求的结果为特定types。 该参数指定types或types集合,如下面支持的types中所列。 如果没有指定,则返回所有types。 通常只有一种types是允许的。 例外是,您可以安全地混合地理编码和build立types,但请注意,这将具有与指定任何types相同的效果。 支持的types是:

地理编码指示地方自动填充服务仅返回地理编码结果,而不是业务结果。 通常,您可以使用此请求来消除指定位置可能不确定的结果。 地址指示“地点自动填充”服务仅返回具有精确地址的地理编码结果。 一般来说,当你知道用户正在寻找完全指定的地址时,你使用这个请求。 设置会指示“自动填充广告”服务仅返回业务结果。 (regions)types集合将指示Places服务返回与以下types匹配的任何结果:locality sublocality postal_code country administrative_area_level_1 administrative_area_level_2(cities)types集合指示Places服务返回与locality或administrative_area_level_3匹配的结果。

来源: https : //developers.google.com/places/supported_types

码:

  List<Integer> filterTypes = new ArrayList<Integer>(); filterTypes.add( Place.TYPE_ESTABLISHMENT ); 

这就是您需要在自动完成场所API中设置filter的方式。

  List<Integer> filters = new ArrayList<Integer>(); filters.add(Place.TYPE_ADMINISTRATIVE_AREA_LEVEL_1); mAutocompleteFilter = AutocompleteFilter.create(filters); mGeoLocationAdapter = new GeoLocationAdapter(this, android.R.layout.simple_list_item_1, latLngBounds, mAutocompleteFilter); 

Android只支持less数几种types,你会得到

 AutocompletePredictionBuffer{status=Status{statusCode=NETWORK_ERROR, resolution=null}} 

如果您使用不受支持的types作为filter。

看到这个链接支持的filtertypes..

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

如果您使用的是Google Play服务版本8.4.0,则可以使用子类AutocompleteFilter.Builder创buildfilter。

由于您不必手动构buildPlacetypes列表,因此使用起来更加简单。

 mAutocompleteFilter = AutocompleteFilter.Builder(). setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES).build(); mGeoLocationAdapter = new GeoLocationAdapter(this, android.R.layout.simple_list_item_1, latLngBounds, mAutocompleteFilter); 

请注意,安装谷歌播放服务版本8.4.0时,目前兼容性问题。 如果遇到这个问题,可以关注这个线程 ,但是我build议如果你努力的话,还是回到静态的不赞成的AutocompleteFilter.create()方法。