2010-10-28 13 views
5

Rozglądałem się trochę po stackoverflow i Grupach dyskusyjnych Google i nie znalazłem odpowiedzi na to dokładne pytanie.W jakim kraju jest obecnie użytkownik?

ja po prostu chcę być w stanie wiedzieć, co kraj użytkownik telefonu Android jest obecnie.

zakładam TelephonyManager nie działa, jeśli użytkownik jest wyłącznie za pomocą wifi. Czy to prawda?

Próbowaliśmy przekazać bieżącą szerokość i długość geograficzną użytkownika za pomocą android.location.Geocoder, ale to naprawdę jest niestabilne. Często zwróci puste wyniki. Czasami możemy zadawać to pytanie, a to w końcu przyniesie wyniki, ale jest naprawdę brzydkie. Czy istnieje bardziej niezawodny sposób?

Dzięki, Rob Sz

+0

Może możesz spróbować użyć Google Maps API, aby uzyskać kraj za pomocą szerokości i długości geograficznej. A także http://gis.stackexchange.com/ pomoże w pewien sposób, jak przypuszczam. –

Odpowiedz

2

można spróbować odwrócić Geo Coding :)

http://code.google.com/apis/maps/documentation/geocoding/ 

Sprawdź ten link. Kraj jest zwracany w JSON.

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false 

Szczerze mówiąc nie wiem, czy to zadziała we wszystkich scenariuszach, ale uważam, że jest to coś, co może pomóc.

EDIT: Wygląda to trochę działa :)

próbowałem z mojego kraju i wydaje się doskonale działa.

http://maps.googleapis.com/maps/api/geocode/json?latlng=6.822716,79.878159&sensor=false

Dostaniesz

{ 
    "status": "ZERO_RESULTS", 
    "results": [ ] 
} 

na przykład, jeśli użytkownik jest w środku oceanu przez przypadek: P

+0

Taa działa tutaj także dla mnie w Kanadzie. Wygląda na to, że potrzebuję tylko short_name w elemencie "types": ["country", "political"] w odpowiedzi. Jaka jest niezawodność? Czy to jak rzucanie 404? –

+0

Aby nie zabrzmieć niegrzecznie, ale czytać moje usta ... To * Google * Mapy: D Należy jednak wiedzieć, że istnieją ograniczenia dotyczące liczby żądań, które można wykonać dziennie. Sprawdź ten link http://code.google.com/apis/maps/documentation/geocoding/#Limits –

+0

Hej, to klasa Google Geocoder w Androidzie jest niestabilna.Tylko dlatego, że pochodzi z Google, nie oznacza, że ​​jest złoty :) –

0

Co na temat korzystania z usługi geolokalizacji IP opartej ? Zgaduję, że ze względu na różnice regulacyjne podziały sieciowe są zwykle dość specyficzne dla danego kraju, z wyjątkiem przypadków takich jak korporacyjne VPN, w których praktycznie jesteś podłączony do sieci gdzie indziej?

Powiązane problemy