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 ?
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));
}
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 ;-)
Si vous avez une adresse complète (ville + rue),
address.getAddressLine(0)
vous trouvez le nom et le numéro de la rue.
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
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.
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..!