如何使用Android Places API自动完成过滤器
我正在尝试在我的应用程序中为android实现新的PlacesAPI,但我似乎不知道如何为请求设置过滤器。这是我的密码如何使用Android Places API自动完成过滤器,android,google-maps,autocomplete,google-places-api,Android,Google Maps,Autocomplete,Google Places Api,我正在尝试在我的应用程序中为android实现新的PlacesAPI,但我似乎不知道如何为请求设置过滤器。这是我的密码 LatLng southWest = new LatLng(85, -180); LatLng northEast = new LatLng(-85, 180); LatLngBounds bounds = new LatLngBounds(southWest, northEast); AutocompleteFilter filter = AutocompleteFilter
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);
正如你所看到的,我遵循了谷歌提供的文档,但是我没有提到如何实现过滤器,在阅读了之后,我仍然不知道如何实现API
我需要帮助来弄清楚什么应该作为API的AutocompleteFilter.create()
的参数。我想按城市过滤数据
感谢文档中的: 表3:支持就地自动完成请求的类型 通过传递types参数,可以将Place Autocomplete请求的结果限制为特定类型。该参数指定类型或类型集合,如下面支持的类型中所列。如果未指定任何内容,则返回所有类型。通常只允许一种类型。例外情况是,您可以安全地混合使用地理编码和设施类型,但请注意,这与不指定任何类型具有相同的效果。支持的类型包括: 地理编码指示Place Autocomplete服务仅返回地理编码结果,而不是业务结果。通常,当指定的位置可能不确定时,使用此请求来消除结果的歧义。 address指示Place Autocomplete服务仅返回带有精确地址的地理编码结果。通常,当您知道用户将寻找一个完全指定的地址时,您就使用这个请求。 机构指示Place Autocomplete服务仅返回业务结果。 (区域)类型集合指示Places服务返回与以下类型匹配的任何结果: 地点 亚局部 邮政编码 国家 行政区一级 行政区二级 (cities)类型集合指示Places服务返回与Location或administrative_area_level_3匹配的结果 资料来源: 代码:
List filterTypes=new ArrayList();
filterTypes.add(Place.TYPE\u建立);
这就是您需要在AutoComplete Place API中设置过滤器的方式
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);
如果使用不支持的类型作为筛选器
有关支持的筛选器类型,请参阅此链接
如果使用Google Play services 8.4.0版,则可以使用子类创建过滤器 它更易于使用,因为您不必手动构建场所类型列表
mAutocompleteFilter = AutocompleteFilter.Builder().
setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES).build();
mGeoLocationAdapter = new GeoLocationAdapter(this,
android.R.layout.simple_list_item_1,
latLngBounds,
mAutocompleteFilter);
请注意,在安装google play services 8.4.0版时,当前存在兼容性问题。如果您遇到这个问题,您可以遵循这个方法,但是如果您遇到困难,我建议您恢复到静态不推荐的方法。它在Google Play Service 9.4上工作
AutocompleteFilter filter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
.build();
嗨,保罗,你们难道不知道如何把国家和边界框分开吗?谢谢。实际上我不确定这是否可能,但如果可能的话,我不知道。键入地址不在那里。。。如果我想获得完整地址结果,我应该使用哪种类型?@Ivan关于限制国家/地区的结果而不使用边界框,您有两种选择:使用REST API或遍历返回的建议,只返回最后一个字是您感兴趣的国家/地区的结果。希望这能有所帮助。@AbhishekPatel我们决定采用第二种选择。而且效果很好。干杯现在这是正确的解决方案,每个人都应该使用它
mAutocompleteFilter = AutocompleteFilter.Builder().
setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES).build();
mGeoLocationAdapter = new GeoLocationAdapter(this,
android.R.layout.simple_list_item_1,
latLngBounds,
mAutocompleteFilter);
AutocompleteFilter filter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
.build();