ジオコーダーを使用して国を制限するには?. 私はこのコードを使用して、米国だけを見ようとしましたが、イタリアやその他の国からの結果が返されます。
Geocoder geocoder = new Geocoder (getActivity(), Locale.US);
検索しましたが、有用なものは見つかりませんでした。
AutoCompleteTextView に適用する AutoComplete アダプターに getFilter メソッドを実装する必要があります。また、「Filterable」も実装する必要があります。
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;
}
}