2013-01-18 185 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

聰明的解決方法 –

相關問題