如何使用地理编码限制国家?我使用这个代码,试图看看美国,但它返回意大利和其他国家的结果。限制地理编码国家/地区
Geocoder geocoder = new Geocoder (getActivity(), Locale.US);
我有搜索,但我没有找到任何有用的东西。
如何使用地理编码限制国家?我使用这个代码,试图看看美国,但它返回意大利和其他国家的结果。限制地理编码国家/地区
Geocoder geocoder = new Geocoder (getActivity(), Locale.US);
我有搜索,但我没有找到任何有用的东西。
你应该实现在您自动完成适配器用getFilter方法,你申请你的AutoCompleteTextView,你也应该实行“可过滤”
private class AutoCompleteAdapter extends ArrayAdapter<Address> implements
Filterable {
.....
@Override
public Filter getFilter() {
Filter myFilter = new Filter() {
@Override
protected FilterResults performFiltering(
final CharSequence constraint) {
List<Address> addressList = null;
if (constraint != null) {
try {
addressList = mGeocoder.getFromLocationName(
(String) constraint, 5);
} catch (IOException e) {
}
}
if (addressList == null) {
addressList = new ArrayList<Address>();
}
final FilterResults filterResults = new FilterResults();
filterResults.values = addressList;
filterResults.count = addressList.size();
return filterResults;
}
@SuppressWarnings("unchecked")
@Override
protected void publishResults(final CharSequence contraint,
final FilterResults results) {
clear();
for (Address address : (List<Address>) results.values) {
try {
/* HERE IS YOUR COUNTRY CODE/CONDITIONS TO FILTER THE SUGGESTED ADDRESS*/
if (address.getCountryCode().equals("US")) {
add(address);
}
} catch (Exception e) {
// TODO: handle exception
}
}
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
@Override
public CharSequence convertResultToString(
final Object resultValue) {
return resultValue == null ? ""
: createFormattedAddressFromAddress((Address) resultValue);
}
};
return myFilter;
}
}
我只需追加", USA"
用户的输入结束最近解决了这个。完全适用于我们的需求,只需几行代码:
public String restrictQueryToUsa(@NonNull String query) {
String suffix = ", USA";
return query.toUpperCase().endsWith(suffix) ? query : query + suffix;
}
注意
我已经验证,这对各种输入,包括:
聪明的解决方法 –
什么是你想要做什么呢? –
我只想要美国的结果 – moskis
如果我说实话,看起来你已经完成了所需的效果,不知道为什么它不起作用 –