studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java android eclipse android-mapview google-maps-android-api-2

java - programacion - Android Geocoder getFromLocationName siempre devuelve null



manual de programacion android pdf (1)

Geocoder no siempre devuelve un valor. Puede intentar enviar una solicitud 3 veces en un bucle for. Debería poder regresar al menos una vez. Si no es así, podría tratarse de un problema de conexión o puede tratarse de otros problemas, como la falta de respuesta del servidor a su solicitud. Pruebe y vea estos hilos:

Geocoder no siempre devuelve un valor y geocoder.getFromLocationName solo devuelve un valor nulo

Actualizado:

Tuve un ciclo while también, pero solía intentarlo al máximo 10 veces. A veces, nunca devolvía nada, incluso si estaba conectado a Internet. Luego, utilicé esta forma mucho más confiable de obtener la dirección cada vez:

public JSONObject getLocationInfo() { HttpGet httpGet = new HttpGet("http://maps.google.com/maps/api/geocode/json?latlng="+lat+","+lng+"&sensor=true"); HttpClient client = new DefaultHttpClient(); HttpResponse response; StringBuilder stringBuilder = new StringBuilder(); try { response = client.execute(httpGet); HttpEntity entity = response.getEntity(); InputStream stream = entity.getContent(); int b; while ((b = stream.read()) != -1) { stringBuilder.append((char) b); } } catch (ClientProtocolException e) { } catch (IOException e) { } JSONObject jsonObject = new JSONObject(); try { jsonObject = new JSONObject(stringBuilder.toString()); } catch (JSONException e) { e.printStackTrace(); } return jsonObject; }

Lo llamé de la siguiente manera:

JSONObject ret = getLocationInfo(); JSONObject location; String location_string; try { location = ret.getJSONArray("results").getJSONObject(0); location_string = location.getString("formatted_address"); Log.d("test", "formattted address:" + location_string); } catch (JSONException e1) { e1.printStackTrace(); }

Espero que esto ayude. También estaba cansado de confiar en el geocodificador. Esto funcionó para mí. Si reemplaza la URL con las coordenadas latitud y longitud, verá el objeto JSON devuelto en un navegador web. Verás lo que acaba de pasar.

He intentado geocodificar una cadena para obtener sus coordenadas, pero mi programa siempre se bloquea porque cada vez que trato de usar getFromLocationName() devuelve null . He estado tratando de arreglar esto por horas pero nada está funcionando. Aquí está mi código

public class MainActivity extends Activity { private GoogleMap mMap; List<Address> addresses; MarkerOptions miami; String myLocation = "Miami,Florida"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (mMap == null) { mMap = ((MapFragment) getFragmentManager().findFragmentById( R.id.map)).getMap(); } if (mMap != null) { Geocoder geocoder = new Geocoder(this); double latitude = 0; double longitude = 0; while(addresses==null){ try { addresses = geocoder.getFromLocationName(myLocation, 1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Address address = addresses.get(0); if (addresses.size() > 0) { latitude = address.getLatitude(); longitude = address.getLongitude(); } LatLng City = new LatLng(latitude, longitude); miami = new MarkerOptions().position(City).title("Miami"); mMap.addMarker(miami); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(City, 15)); } }