2013-01-18 150 views
1

如何使用地理编码限制国家?我使用这个代码,试图看看美国,但它返回意大利和其他国家的结果。限制地理编码国家/地区

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

我有搜索,但我没有找到任何有用的东西。

+0

什么是你想要做什么呢? –

+0

我只想要美国的结果 – moskis

+0

如果我说实话,看起来你已经完成了所需的效果,不知道为什么它不起作用 –

回答

1

你应该实现在您自动完成适配器用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; 
     } 
} 
3

我只需追加", USA"用户的输入结束最近解决了这个。完全适用于我们的需求,只需几行代码:

public String restrictQueryToUsa(@NonNull String query) { 
    String suffix = ", USA"; 
    return query.toUpperCase().endsWith(suffix) ? query : query + suffix; 
} 

注意
我已经验证,这对各种输入,包括:

  • 白金汉宫
  • 1234大街
  • 荷兰
  • 伦敦
  • 东京
  • 麦当劳
  • 像90210工作邮政编码
  • 像SFO机场代码也行
+0

聪明的解决方法 –

相关问题