3

I am using the built in Android Geocoder on a Latitude and Longitude and using getAdminArea() to try and get back a 2 character state abbreviation however I am getting back the full state name.

Geocoder geocoder.getFromLocation(latitude, longitude, 1);
String state = addresses.get(0).getAdminArea();
//state = "Ontario" not "ON"

Link to Android Docs where it says I should get back only the two character state abbreviation: http://developer.android.com/reference/android/location/Address.html#getAdminArea()

Matt
  • 22,721
  • 17
  • 71
  • 112
Paito
  • 1,553
  • 1
  • 15
  • 24
  • No where in the docs it is mentioned that it should return only two characters for admin area. – Nitish Mar 25 '13 at 17:57
  • It almost does... Docs: Returns the administrative area name of the address, for example, "CA", or null if it is unknown. – Paito Mar 25 '13 at 18:11
  • 1
    Its only an example. There is no hard and fast rule that it should only return two characters only. – Nitish Mar 25 '13 at 18:14

1 Answers1

1

You can use following code.

public static final Map<String, String> STATE_MAP;
static {
    STATE_MAP = new HashMap<String, String>();
    STATE_MAP.put("Alabama", "AL");
    STATE_MAP.put("Alaska", "AK");
    STATE_MAP.put("Alberta", "AB");
    STATE_MAP.put("Arizona", "AZ");
    STATE_MAP.put("Arkansas", "AR");
    STATE_MAP.put("British Columbia", "BC");
    STATE_MAP.put("California", "CA");
    STATE_MAP.put("Colorado", "CO");
    STATE_MAP.put("Connecticut", "CT");
    STATE_MAP.put("Delaware", "DE");
    STATE_MAP.put("District Of Columbia", "DC");
    STATE_MAP.put("Florida", "FL");
    STATE_MAP.put("Georgia", "GA");
    STATE_MAP.put("Guam", "GU");
    STATE_MAP.put("Hawaii", "HI");
    STATE_MAP.put("Idaho", "ID");
    STATE_MAP.put("Illinois", "IL");
    STATE_MAP.put("Indiana", "IN");
    STATE_MAP.put("Iowa", "IA");
    STATE_MAP.put("Kansas", "KS");
    STATE_MAP.put("Kentucky", "KY");
    STATE_MAP.put("Louisiana", "LA");
    STATE_MAP.put("Maine", "ME");
    STATE_MAP.put("Manitoba", "MB");
    STATE_MAP.put("Maryland", "MD");
    STATE_MAP.put("Massachusetts", "MA");
    STATE_MAP.put("Michigan", "MI");
    STATE_MAP.put("Minnesota", "MN");
    STATE_MAP.put("Mississippi", "MS");
    STATE_MAP.put("Missouri", "MO");
    STATE_MAP.put("Montana", "MT");
    STATE_MAP.put("Nebraska", "NE");
    STATE_MAP.put("Nevada", "NV");
    STATE_MAP.put("New Brunswick", "NB");
    STATE_MAP.put("New Hampshire", "NH");
    STATE_MAP.put("New Jersey", "NJ");
    STATE_MAP.put("New Mexico", "NM");
    STATE_MAP.put("New York", "NY");
    STATE_MAP.put("Newfoundland", "NF");
    STATE_MAP.put("North Carolina", "NC");
    STATE_MAP.put("North Dakota", "ND");
    STATE_MAP.put("Northwest Territories", "NT");
    STATE_MAP.put("Nova Scotia", "NS");
    STATE_MAP.put("Nunavut", "NU");
    STATE_MAP.put("Ohio", "OH");
    STATE_MAP.put("Oklahoma", "OK");
    STATE_MAP.put("Ontario", "ON");
    STATE_MAP.put("Oregon", "OR");
    STATE_MAP.put("Pennsylvania", "PA");
    STATE_MAP.put("Prince Edward Island", "PE");
    STATE_MAP.put("Puerto Rico", "PR");
    STATE_MAP.put("Quebec", "QC");
    STATE_MAP.put("Rhode Island", "RI");
    STATE_MAP.put("Saskatchewan", "SK");
    STATE_MAP.put("South Carolina", "SC");
    STATE_MAP.put("South Dakota", "SD");
    STATE_MAP.put("Tennessee", "TN");
    STATE_MAP.put("Texas", "TX");
    STATE_MAP.put("Utah", "UT");
    STATE_MAP.put("Vermont", "VT");
    STATE_MAP.put("Virgin Islands", "VI");
    STATE_MAP.put("Virginia", "VA");
    STATE_MAP.put("Washington", "WA");
    STATE_MAP.put("West Virginia", "WV");
    STATE_MAP.put("Wisconsin", "WI");
    STATE_MAP.put("Wyoming", "WY");
    STATE_MAP.put("Yukon Territory", "YT");
}

public static String getAbbreviationFromUSState(String state) {
    if (STATE_MAP.containsKey(state)) {
        return STATE_MAP.get(state);
    }else{
        return state;
    }
}
Ken W.
  • 1,550
  • 1
  • 14
  • 18