2

ジオコーダーを使用して国を制限するには?. 私はこのコードを使用して、米国だけを見ようとしましたが、イタリアやその他の国からの結果が返されます。

Geocoder geocoder = new Geocoder (getActivity(), Locale.US);

検索しましたが、有用なものは見つかりませんでした。

4

2 に答える 2

1

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;
        }
}
于 2013-02-03T19:39:43.573 に答える