![](/img/trans.png)
[英]Restrict Autocomplete search to a particular country in Google Places Android API
[英]Restrict Places Autocomplete API to cities of specific country android
我正在使用Play服务中的PlaceAutocompleteApi
,我想要做的是将自动完成限制到特定的国家/地区和城市。 例如。 所有城市都只能说是印度。 我使用AutocompleteFilter
这样做但我不知道在哪里指定我想限制的国家/地区。
这是我的代码
List<Integer> autocompleteFilter = new ArrayList<>();
// autocompleteFilter.add(Place.TYPE_COUNTRY);
// autocompleteFilter.add(Place.TYPE_LOCALITY);
mAdapter = new PlaceAutocompleteAdapter(mContext,R.layout.layout_location_text,
mGoogleApiClient, BOUNDS, AutocompleteFilter.create(autocompleteFilter));
mTxtLocation.setAdapter(mAdapter);
mTxtLocation.setOnItemClickListener(mAutocompleteClickListener);
有什么想法吗?
这样做的方法是将国家/地区作为components
参数添加到Web服务URL:
StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON);
sb.append("?key=" + API_KEY);
sb.append("&components=country:in");
对于城市,您可以使用administrative_area_level_3
标记:
sb.append("&components=administrative_area_level_3:bengaluru");
或者locality
标记:
sb.append("&components=locality:redmond");
参考文献:
1. 地理编码API 。
2. 地址类型和组件类型 。
这是我使用过的解决方法(如果你愿意的话)。 它利用(利用)这样一个事实:当转换为字符串时,每个响应项都是逗号分隔的字符串。 在将结果返回到getFilter()
之前,请执行以下步骤。
ArrayList
,将其命名为returnedResults
。 returnedResults
和在每次迭代中使用获得的每个预测到一个字符串数组returnedResults.get(i).getFullText(xxx).toString().split(",")
ArrayList
变量中,我们将其myResult
。 myResult
。 使用单独变量的原因是您可能无法轻松操作原始响应列表。 这种方法就像一个魅力!
希望这可以帮助。
按国家/地区筛选结果
// Create Filter
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setCountry("AU")
.build();
// Attach to autocomplete fragment / widget
autocompleteFragment.setFilter(typeFilter);
val sb = StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON)
sb.append("?key=$API_KEY")
sb.append("&types=establishment")
sb.append("&location=$locationLat,$LocationLng")
sb.append("&radius=50000&strictbounds")
sb.append("&input=" + URLEncoder.encode(input, "utf8"))
此api将搜索限制为区域。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.