2011-06-29 12 views
5

Więc zrobiłem aplikację, która uzyska dostęp do lokalizacji użytkownika, a następnie interpretacji (reverse geokodowanie) to z geocoder jak ten:Jaki jest najlepszy sposób, aby zinterpretować lokalizację użytkownika obok geocoder

Geocoder gc = new Geocoder(ctx, Locale.getDefault()); 
List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults); 
Address address = addresses.get(0); 
town = address.getLocality(); 
countryCd = address.getCountryCode(); 

jednak znajdę geocoder usługa jest naprawdę niewiarygodna z powodu wyjątku IOException i zbyt często niedostępnej usługi.

Czytałem rozwiązania polegające na rozsyłaniu spamu do usługi Geocoder, aż do uzyskania wyniku, a inni twierdzą, że usługa zezwala na jedno trafienie na adres IP co 15 sekund.

Czasami ponowne uruchomienie urządzenia spowoduje, że usługa będzie ponownie dostępna.

Czy istnieje inne API lub podejście do tego tematu?

Odpowiedz

-1
public void getAddress(double lat, double lng) { 
    Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
    try { 
     List<Address> addresses = geocoder.getFromLocation(lat, lng, 1); 
     Address obj = addresses.get(0); 
     String add = obj.getAddressLine(0); 
     GUIStatics.currentAddress = obj.getSubAdminArea() + "," 
       + obj.getAdminArea(); 
     GUIStatics.latitude = obj.getLatitude(); 
     GUIStatics.longitude = obj.getLongitude(); 
     GUIStatics.currentCity= obj.getSubAdminArea(); 
     GUIStatics.currentState= obj.getAdminArea(); 
     add = add + "\n" + obj.getCountryName(); 
     add = add + "\n" + obj.getCountryCode(); 
     add = add + "\n" + obj.getAdminArea(); 
     add = add + "\n" + obj.getPostalCode(); 
     add = add + "\n" + obj.getSubAdminArea(); 
     add = add + "\n" + obj.getLocality(); 
     add = add + "\n" + obj.getSubThoroughfare(); 

     Log.v("IGA", "Address" + add); 
     // Toast.makeText(this, "Address=>" + add, 
     // Toast.LENGTH_SHORT).show(); 

     // TennisAppActivity.showDialog(add); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
    } 
} 

Skorzystaj z niej, aby pomóc Ci w pełni.

+0

to jest to samo api co powyżej w moim OP. Proszę przeczytać przed odpowiedzią, geocoder.getFromLocation rzuca wyjątek IOException. –

-1

Twój prawdopodobnie otrzymuję wyjątek IOException i ServiceUnavailble z powodu implementacji.

Mają lektury tej najlepszej praktyki: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

(lepsze to niż API) i opensource!

+0

Przeczytałem już to 2 razy. To nie pomaga, ponieważ różni się od mojego pytania. Tu nie chodzi o zdobycie lokalizacji. Moja lokalizacja została poprawnie pozyskana i zaktualizowana, ale nie mogę jej interpretować bez Geokodera. –

Powiązane problemy