web-dev-qa-db-fra.com

Obtenir l'adresse de l'emplacement actuel pour l'application Android

Je n'ai pas besoin d'afficher une carte. Cependant, je dois utiliser le réseau gps/3g pour localiser mes positions actuelles. ADDRESS (pas long et lat). Cela sera ensuite ajouté à une réponse automatisée par sms pour informer une personne que je ne peux pas répondre, et l'inclusion de l'adresse de chaîne de ma position actuelle . J'ai le sms fonctionne, juste besoin de trouver une méthode pour accéder au gps et extraire une adresse. J'ai vu un exemple de code pour lat/long. Peut-être dois-je convertir lat/long en une adresse de l'API Google Maps? Je ne suis pas sûr de savoir comment s'y prendre . Tous les conseils/extraits de code/tutoriels similaires sont les bienvenus! Merci. :)

17
GrumP

Il y a deux étapes à cela:

  1. Obtenez l'emplacement actuel - latitude et longitude, à l'aide du GPS, du réseau, du dernier emplacement connu, etc. La documentation Android localisation comprend un exemple de code.

  2. Utilisez la classe Android Geocoder pour demander une recherche afin de convertir le lat/long en adresse (à partir de laquelle vous pouvez facilement extraire une ville, un pays, une rue, etc.). Plus précisément, vous devez utiliser la méthode getFromLocation ()

Remarque:

  • La méthode getFromLocation () renvoie un ensemble de correspondances. Dans certains scénarios, vous pouvez montrer à l'utilisateur un ensemble (disons 5) et lui permettre de choisir le meilleur, ou vous pouvez simplement utiliser le premier, en supposant que c'est le meilleur.
  • Rappelez-vous que ces deux appels peuvent prendre du temps. Le GPS/réseau peut prendre un certain temps pour fournir un emplacement. De même, l'appel de getFromLocation () peut prendre du temps, car il passe par le réseau à l'API Google Maps. Par conséquent, il est essentiel que vous utilisiez une gestion d'erreur étendue pour les différents scénarios ET que ces deux appels soient déplacés vers un thread distinct afin de ne pas verrouiller l'interface utilisateur de l'application (consultez AsyncTask)
  • Le backend de classe Geocoder est uniquement présent sur les appareils approuvés par Google. Donc, la recherche échouera sur tous les appareils ne contenant pas GMail/Market/Maps.
25
Ollie C

La réponse est ici: http://developer.Android.com/reference/Android/location/Geocoder.html

Vous devez créer un objet Geocoder et appeler getFromLocation(double latitude, double longitude, int maxResults)

Geocoder gCoder = new Geocoder(myContext);
ArrayList<Address> addresses = gCoder.getFromLocation(123456789, 123456789, 1);
if (addresses != null && addresses.size() > 0) {
    Toast.makeText(myContext, "country: " + addresses.get(0).getCountryName(), Toast.LENGTH_LONG).show();
}
14
WarrenFaith

Comme vous le savez pour obtenir l'adresse du lieu, vous pouvez utiliser Google GeoCoder

à côté de cela pour obtenir les adresses de localisation en fournissant la latitude et la longitude, vous pouvez utiliser cette API. C’est fiable et plus rapide que Google Geocoder.

URL de l'API - 

https://maps.googleapis.com/maps/api/geocode/json?latlng=

vous pouvez concaténer la latitude et la longitude à côté du signe égal à l’url.

exemple -

lat = 6.123456

lng = 79.123456

String url = 

" https://maps.googleapis.com/maps/api/geocode/json?latlng=lat+ ", "+ lng";

ceci retournera un Nice jsonObject et vous pourrez jouer avec, essayez simplement this.Currently im en utilisant cette API pour mes services de localisation et son plus rapide que la normale google geoCoder API. peut utiliser volley ou n'importe quoi.Code de bonne qualité.

0
Ashana.Jackol