如何使用地理編碼限制國家?我使用這個代碼,試圖看看美國,但它返回意大利和其他國家的結果。限制地理編碼國家/地區
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
如果我說實話,看起來你已經完成了所需的效果,不知道爲什麼它不起作用 –