2011-10-31 17 views
6

Wiem, że pytanie było często zadawane wcześniej, ale nie mogę uzyskać rozwiązania z żadnej odpowiedzi ani wyników wyszukiwania. muszę rozwiązać ten problem jak najszybciej .. Próbuję uzyskać szerokość i długość geograficzną z adresu wejść przez użytkownika, ale jestem coraz dalej:java.io.IOException: Nie można przeanalizować odpowiedzi z serwera pod adresem getFromLocationName()

java.io.IOException: Unable to parse response from server 

Używam tego kodu:

 Geocoder geocoder = new Geocoder(this ,Locale.getDefault()); 
     String newAddress = (String)saveas.getText().toString(); 
     List<Address> addresses = geocoder.getFromLocationName(newAddress, 1); 

Próbowałem dużo z różnymi możliwymi sposobami, ale nic nie działa ... Domyślna aplikacja do map działa dobrze, gdy użytkownik poda adres, który z powodzeniem pokazuje ten adres na mapie. Jak mogę zrobić to samo .. ?

Dodałem wszystkie wymagane uprawnienia i jestem testowania go na rzeczywistym urządzeniu (wersja 2.3) ...

+0

co to jest saveas tutaj Editekst? – ingsaurabh

+0

tak, jest to EditText .. –

+0

Czy próbowałeś debugowania tego w Eclipse lub umieścić na dzienniku newAddress, aby dowiedzieć się, co zawiera ta zmienna? – Sephy

Odpowiedz

0

Nie wiem, czy to pomaga BTW Poniżej fragment z mojego projektu działa poprawnie zmodyfikować go do własnych twoje potrzeby

String newAddress = saveas.getText().toString(); 
searchFromLocationName(newAddress); 


private void searchFromLocationName(String name){ 
try { 
    List<Address> result 
    = myGeocoder.getFromLocationName(name, MAX_RESULT); 

    if ((result == null)||(result.isEmpty())){ 
    Toast.makeText(AndroidgetFromLocationNameActivity.this, 
    "No matches were found or there is no backend service!", 
    Toast.LENGTH_LONG).show(); 
    }else{ 

    MyArrayAdapter adapter = new MyArrayAdapter(this, 
     android.R.layout.simple_list_item_1, result); 
    listviewResult.setAdapter(adapter); 

    Toast.makeText(AndroidgetFromLocationNameActivity.this, 
    "Finished!", 
    Toast.LENGTH_LONG).show(); 
    } 


} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    Toast.makeText(AndroidgetFromLocationNameActivity.this, 
    "The network is unavailable or any other I/O problem occurs!", 
    Toast.LENGTH_LONG).show(); 
} 
} 
1

może to być przydatne, jeśli ustawić parametr lokalizacji przy tworzeniu geocoder:

yourGeocoder = new Geocoder(this, Locale.CANADA); 

Proszę wymienić drugi parametr z najlepszych wartości.

Domyślna wartość locale może nie odpowiadać używanemu regionowi mapy.

2

Czy próbowałeś już przez połączenie 3G? Zauważyłem, że jeśli wyślesz kilka odwrotnych żądań geolokalizacji z wifi, wygląda na to, że twoje IP jest zablokowane po pewnym czasie, a geolokalizacja odwrotna nie odpowiada przez pewien czas. Przejście na 3G sprawiło, że żądanie zadziałało, gdy miałem podobne problemy.

2

Miałem ten sam problem z moją kartą Samsung Galaxy Tab 10.1. Szukam godziny na rozwiązanie i nic nie pomogło. Aby rozwiązać problemy spróbować następujących czynności:

idź do ustawienia lokalizacji i umożliwiają:

1.Wykorzystanie sieci bezprzewodowych 2.Wykorzystanie satelitów GPS

czekać na lokalizacji GPS fix

po tym, serwer geocoder zaczyna reagować. Nawet po wyłączeniu sieci bezprzewodowej i lokalizacji GPS serwer nadal działa. Myślę, że geokodera można używać tylko wtedy, gdy udostępniasz swoją lokalizację Google.

+0

Dzięki, zadziałało dla mnie! – kikettas

0

Prawdopodobnie Twój telefon nie jest podłączony i nie może odebrać odpowiedzi z serwera.

Jak wyjaśniono here geocoder

throws IOException if the network is unavailable or any other I/O problem occurs 
2

I rozwiązać ten sam problem zmieniający się kontekst.

używam Fragment, więc mój kod jest jak ten

public class SearchRoteFragment extends Fragment{ 

     @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.teste_mapa, container, false); 
     context = getActivity(); 
... 
} 

i gdy zgłoszę Geokodując zrobić to

Geocoder geoCoder = new Geocoder(context, Locale.getDefault()); 
0

ja testował na Androidzie 2.3.4 i otrzymał „Nie można parsować odpowiedź z serwera "wyjątek.

Upewnij się, że działa mapa Google, moja nie działała! Po rozpoczęciu pracy mapy Google Geocoder było w porządku.

Połączyłem "Użyj sieci bezprzewodowych" & "Użyj satelitów GPS" w ustawieniach "Lokalizacja & bezpieczeństwa".

Powiązane problemy