Android Geocoder obtener nombre corto del área de administración

Cuando se utiliza la API de google maps, para el área de administración le da el nombre largo y el nombre corto, por ejemplo.

{ "long_name": "Victoria", "short_name": "VIC", "types": [ "administrative_area_level_1", "political" ] } 

sin embargo, cuando se utiliza geocoder nativo de android, sólo estoy recibiendo el nombre largo (en este caso "Victoria"). ¿Hay una manera de obtener el nombre corto de un área de administración en android, a falta de integrar el google maps geocoding API?

Voy a mantener esto corto y simple, he hecho mi implementación de ubicación un poco diferente. Ya que me tomó un par de horas para hacer esto.

Primero hice una lista del mapa para encontrar el nombre del estado entonces lo convierto al código de 2 letras así:

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

Luego lo añadí al resultado de String de ubicación después de hacer todo el hocus pocus para obtener la dirección como

  Address address = addressList.get(0); String state = states.get(address.getAdminArea()); result = address.getLocality() + ", " + state; 

Espero que hayas conseguido esto antes que yo, pero decidí poner esto para cualquier otra persona que lo necesite. Estaba en esta página cuando lo arreglé.

NOTA: La lista de Mapa (no es realmente un Mapa de Ubicación) tiene "estados" de Canadá y algunos otros lugares que usan abreviaturas.

Después de algunas búsquedas, encontré una solución para eso

String url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + latitude + "," + longitude + "&sensor=true";

 RequestQueue mVolleyQueue = Volley.newRequestQueue(this); StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { @Override public void onResponse(String response) { try { Log.i("response ", response); JSONObject jsonObject = new JSONObject(response); JSONArray arrayResult = jsonObject.getJSONArray("results"); JSONArray arrComponent = arrayResult.getJSONObject(0).getJSONArray("address_components"); for (int i = 0; i < arrComponent.length(); i++) { JSONArray arrType = arrComponent.getJSONObject(i).getJSONArray("types"); for (int j = 0; j < arrType.length(); j++) { if (arrType.getString(j).equals("administrative_area_level_1")) { longname = arrComponent.getJSONObject(i).getString("long_name"); shortname = arrComponent.getJSONObject(i).getString("short_name"); Log.i("longname", longname); Log.i("shortname", shortname); } } } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { error.printStackTrace(); } }); stringRequest.setShouldCache(false); stringRequest.setTag("Volley"); mVolleyQueue.add(stringRequest); 

Codding feliz 🙂

  • El método isPresent () de Geocoder siempre devuelve false
  • Google Maps android consigue longitude-latitud moviendo un marcador en el mapa
  • Resultados de geocodificación sin mostrarlos en un mapa
  • Error de Geocoder grpc
  • Obtener el contexto en una clase que implementa Runnable
  • Android GeoCoder devuelve sólo 1 resultado
  • El servicio de Google Geocoder no es viable (Coordenadas a la dirección)
  • Java.io.IOException: No se puede analizar la respuesta del servidor en getFromLocationName ()
  • Geocoder.getFromLocation (); Tiempo agotado esperando la respuesta del servidor
  • Java.io.IOException: falló grpc
  • Autocomplete la API del sitio para obtener las coordenadas GPS de la dirección ingresada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.