Obtention du nom de la rue à partir de L'adresse/de l'objet de localisation dans Android

j'essaie d'obtenir le nom de rue de mon emplacement actuel, mais je n'arrive pas à l'obtenir.

j'ai utiliser cette méthode pour récupérer l'Adresse:

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;
        }
    }

Et puis je peux faire des choses comme. address.getLocality() et address.getPostalCode()

Mais ce que je veux, c'est le nom de la rue. Comme dans "Potterstreet 12". Lorsque j'imprime la ligne D'adresse (0) et la ligne D'adresse(1), Je n'obtiens que le code postal, la ville et le pays.

Comment puis-je récupérer le nom de rue du poste que je occupe actuellement ?

16
demandé sur Galip 2010-11-23 17:12:21

6 réponses

Avez-vous essayé d'utiliser getAddressLine? Voir ici pour plus d'informations sur cette méthode

quelque Chose comme ça devrait le faire (non testé):

for (int i = 0; i < addresses.getMaxAddressLineIndex(); i++) {
 Log.d("=Adress=",addresses.getAddressLine(i));
}
14
répondu ccheneson 2013-01-18 16:17:04

Essayer quelque chose comme cela dans votre code

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();

ça fonctionne pour moi :-) Bonne chance ;-)

8
répondu user2896152 2014-01-08 19:35:32

Si vous avez une adresse complète (ville + rue),

address.getAddressLine(0)

vous trouvez le nom et le numéro de la rue.

1
répondu Umberto 2012-12-18 22:05:22

getFromLocation ne marchait pas pour moi non plus. Il y a quelques mesures que vous pouvez prendre.



1. Tout d'abord, allez dans gradle et assurez-vous que vous utilisez les derniers services de jeu lib.



2. N'exagérez pas, la raison pour laquelle je n'ai pas obtenu de résultats est parce que j'ai dû beaucoup d'informations dans mon adresse. Quand j'ai enlevé le code postal, j'ai eu des résultats à chaque fois.



3. Essayez l'api en ligne: http://maps.google.com/maps/api/geocode/json?address=192%20McEwan%20Dr%20E,%20Caledon,%20ON&sensor=false Il suffit de remplacer l'adresse avec le vôtre.

Bonne chance

1
répondu mossman252 2015-12-04 07:04:09

j'ai eu un problème similaire mais avec le nom du Pays, c'est la fonction que j'ai fini par utiliser:

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';
 }

Vous devriez être capable d'adapter ceci pour faire sortir le nom de la rue sans trop de tracas.

Inspirées par cette réponse

0
répondu jsims281 2017-05-23 12:31:57
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() retour Streetname
  • getlocality() return ville
  • getadminarea() retourne l'État

C'est Tout..!

-3
répondu Dinesh Kumar 2012-02-11 10:28:13