it-swarm.com.de

Ermitteln des Straßennamens vom Adress-/Standortobjekt in Android

Ich versuche, den Straßennamen meines aktuellen Standorts abzurufen, aber ich kann es nicht scheinen.

Ich verwende diese Methode, um die Adresse abzurufen:

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

Und dann kann ich Sachen machen. address.getLocality() und address.getPostalCode()

Aber was ich will, ist der Straßenname. Wie in "Potterstraße 12". Wenn ich die AddressLine (0) und die AddressLine (1) drucke, bekomme ich nur die Postleitzahl, den Ort und das Land.

Wie kann ich den Straßennamen der aktuellen Position abrufen?

16
Galip

Haben Sie versucht, getAddressLine zu verwenden? Siehe hier für weitere Informationen zu dieser Methode

So etwas sollte folgendes tun (ungeprüft):

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

Versuchen Sie so etwas in Ihrem 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();

es funktioniert für mich :-) Viel Glück ;-)

9
user2896152

getFromLocation funktionierte auch nicht für mich. Es gibt ein paar Schritte, die Sie unternehmen können. 

1. Steigen Sie zuerst in Gradle ein und stellen Sie sicher, dass Sie die neueste Spieldienst-Bibliothek verwenden.

2. Überlegen Sie nicht, der Grund, warum ich keine Ergebnisse habe, ist, dass ich zu viele Informationen in meiner Adresse hatte. Als ich die Postleitzahl entfernte, erhielt ich jedes Mal Ergebnisse.

3. Probieren Sie die Online-API aus: http://maps.google.com/maps/api/geocode/json?address=192%20McEwan%20Dr%20E,%20Caledon,%20ON&sensor=false Ersetzen Sie einfach die Adresse durch Ihre. 

Viel Glück

1
mossman252

Wenn Sie eine vollständige Adresse (Stadt + Straße) haben, in 

address.getAddressLine(0)

sie finden den Straßennamen und die Nummer.

1
Umberto

Ich hatte ein sehr ähnliches Problem, aber mit dem Ländernamen habe ich diese Funktion verwendet: 

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

Sie sollten dies anpassen können, um den Straßennamen ohne viel Aufwand herauszuholen. 

Inspiriert durch diese Antwort

0
jsims281