2010-11-23 11 views
15

Estoy tratando de obtener el nombre de la calle de mi ubicación actual, pero parece que no puedo obtenerlo.Obtener el nombre de la calle del objeto Dirección/Ubicación en Android

que utiliza este método para recuperar la dirección:

public Address getAddressForLocation(Context context, Location location) throws IOException { 

     if (location == null) { 
      return null; 
     } 
     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 
     int maxResults = 1; 

     Geocoder gc = new Geocoder(context, Locale.getDefault()); 
     List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults); 

     if (addresses.size() == 1) { 
      return addresses.get(0); 
     } else { 
      return null; 
     } 
    } 

y luego puedo hacer cosas similares. address.getLocality() y address.getPostalCode()

Pero lo que quiero es el nombre de la calle. Como en "Potterstreet 12". Cuando imprimo la AddressLine (0) y AddressLine (1) solo obtengo el código postal, la ciudad y el país.

¿Cómo puedo recuperar el nombre de la calle del puesto en el que me encuentro actualmente?

Respuesta

13

¿Has probado a usar getAddressLine? Ver here para obtener más información sobre este método

Algo como esto debería hacer (no probado):

for (int i = 0; i < addresses.getMaxAddressLineIndex(); i++) { 
Log.d("=Adress=",addresses.getAddressLine(i)); 
} 
+0

Sí, como he dicho anteriormente, cuando imprimo getAddressLine (0) y (1) consigo el postalcode, ciudad y país. Sin nombre de calle ... – Galip

+0

Lo siento, no lo he notado. Tal vez puedas intentar enviar a través del emulador cierta latitud y longitud de otra ubicación y verificar si puedes ver algunos nombres de calles devueltos. – ccheneson

+0

Quizás también podría aumentar el maxResult para comprobar qué contienen los demás resultados como información. – ccheneson

-3
Geocoder gcd = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = 
       gcd.getFromLocation(currentLatitude, currentLongitude,100); 
if (addresses.size() > 0 && addresses != null) { 
       StringBuilder result = new StringBuilder(); 
       myaddress.setText(addresses.get(0).getFeatureName()+"-"+addresses.get(0).getLocality()+"-"+addresses.get(0).getAdminArea()+"-"+addresses.get(0).getCountryName()); 
} 
  • getfeaturename() devuelven StreetName
  • getlocality() devuelven la ciudad
  • getadminarea() return Estado

¡Eso es todo ...!

+5

Esto no es correcto en absoluto. – Xample

0

que tenía un problema muy similar pero con el nombre del país, esta es la función que terminé usando:

function getCountry(results) { 
    var geocoderAddressComponent,addressComponentTypes,address; 
    for (var i in results) { 
     geocoderAddressComponent = results[i].address_components; 
     for (var j in geocoderAddressComponent) { 
     address = geocoderAddressComponent[j]; 
     addressComponentTypes = geocoderAddressComponent[j].types; 
     for (var k in addressComponentTypes) { 
      if (addressComponentTypes[k] == 'country') { 
      return address.long_name; 
      } 
     } 
     } 
    } 
    return 'Unknown'; 
} 

usted debería ser capaz de adaptar este para obtener el nombre de la calle a cabo sin mucho alboroto.

Inspired by this answer

1

Si usted tiene una dirección completa (calle de la ciudad +), en

address.getAddressLine(0) 

que encontrar el nombre de la calle y el número.

8

intentar algo como esto en su código

String cityName=null;    
Geocoder gcd = new Geocoder(getBaseContext(),Locale.getDefault());    
List<Address> addresses;  
try {  
    addresses = gcd.getFromLocation(location.getLatitude(), location 
        .getLongitude(), 1);  
    if (addresses.size() > 0) 
     StreetName=addresses.get(0).getThoroughfare(); 
     String s = longitude+"\n"+latitude + 
     "\n\nMy Currrent Street is: "+StreetName; 
     Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show(); 

funciona para mí :-) Buena suerte ;-)

+2

getThoroughfare() devuelve nulo en los casos cuando se está en el área suburbana. No se puede generalizar a cada ubicación del usuario. – Mrigank

1

getFromLocation no funcionaba para mí tampoco. Hay un par de pasos que puede tomar.

1. Primero, vaya a gradle y asegúrese de estar utilizando la última lib de servicios de reproducción.

2. No especifique en exceso, la razón por la que no obtuve ningún resultado es porque tenía mucha información en mi dirección. Cuando eliminé el código postal obtuve resultados cada vez.

3. Pruebe la API en línea: http://maps.google.com/maps/api/geocode/json?address=192%20McEwan%20Dr%20E,%20Caledon,%20ON&sensor=false Simplemente reemplace la dirección allí con la suya.

Buena suerte

Cuestiones relacionadas