2012-07-29 14 views
5

Używam trasy mapy google do mojej własnej aplikacji na Androida. 2 dni temu działało dobrze, ale po tym, gdy aplikacja uruchamia swoje dawanie mi błędów za pomocą logcat. Czy jakiekolwiek ciało może mi podać przyczynę i rozwiązanie tego problemu.Błąd odniesienia niezerokowanego obiektu

org.xml.sax.SAXParseException: unterminated entity ref (position:ENTITY_REF &@1:799 in [email protected]) 

private String[] getDirectionData(String sourceLat, String sourceLong, String destinationLat, String destinationLong) { 


String urlString = "http://maps.google.com/maps?f=d&hl=en&" +"saddr="+sourceLat+","+sourceLong+"&daddr="+destinationLat+","+destinationLong + "&ie=UTF8&0&om=0&output=kml"; 
Log.d("URL", urlString); 
Document doc = null; 
HttpURLConnection urlConnection = null; 
URL url = null; 
String pathConent = ""; 

try { 

    url = new URL(urlString.toString()); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection.setDoOutput(true); 
    urlConnection.setDoInput(true); 
    urlConnection.connect(); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    doc = db.parse(urlConnection.getInputStream()); 

} catch (Exception e) { 

    Log.w("Error in google map",e); 
} 

NodeList nl = doc.getElementsByTagName("LineString"); 
for (int s = 0; s < nl.getLength(); s++) { 
    Node rootNode = nl.item(s); 
    NodeList configItems = rootNode.getChildNodes(); 
    for (int x = 0; x < configItems.getLength(); x++) { 
    Node lineStringNode = configItems.item(x); 
    NodeList path = lineStringNode.getChildNodes(); 
    pathConent = path.item(0).getNodeValue(); 
    } 
} 
String[] tempContent = pathConent.split(" "); 
return tempContent; 
} 
+0

dodać niektóre kodu i adresu obrazu na pytanie – hasanghaforian

+0

oh, znalazł doskonałą odpowiedź na tym forum [link do pasującej odpowiedzi] [1] [1]: http://stackoverflow.com/questions/11745314/why-retrieving-google-directions -nie-Android-używa-kml-dane-nie-działa-anymo – 2red13

Odpowiedz

0

Komunikat o błędzie jest dość sugestywny: Znacznik ref jest niezakończony, np <ref> nie ma pary obejmującej </ref>. Sprawdź poprawność danych wejściowych XML za pomocą narzędzia takiego jak this.

+1

nie jest użyteczne, problem jest jasny, ale odpowiedź jest potwierdzona przez google i kod jest rzeczywiście nie działa od czerwca. Szukam tego samego numeru – 2red13

+0

@ 2red13 Jakie jest Twoje zdanie na temat mojej odpowiedzi? – 10101010

1

Nie wiem, ale myślę, że to dlatego, że wyjście = kml nie jest już dostępne, ponieważ wielu użytkowników ma z tym problem.

+0

http://stackoverflow.com/questions/11745314/why-retrieving-google-directions-for-android-using-kml-data-is-not-working-anymo – 2red13

+0

jeśli napiszesz link w przeglądarce, kml Rzecz po prostu działa dobrze. Sugeruje to, że istnieje pewien problem z kodowaniem. Mam do czynienia z tym samym problemem, ten sam kod, ale nie byłem pewien, czy dało to wynik kilka dni wcześniej. – 10101010

0

Sam miałem do czynienia z tym samym problemem. Ten wyjątek nadchodzi, ponieważ niektóre ważne elementy KML zostały ostatnio odrzucone przez Google. Na przykład, zapoznaj się z GeometryCollection. Jeśli twój kod próbuje znaleźć takie elementy w otrzymanym dokumencie, może wyrzucić wyjątek SAXParseException: ref.

Wprowadzono nowy interfejs API Map. Jest dostępny here.

Sam pobrałem plik kml i zapisałem go w urządzeniu. Kiedy przyjrzałem się temu przy użyciu edytora, nie znalazłem elementu, którego szukał mój kod. Jeśli jednak używasz pliku kml do znalezienia trasy w najnowszej wersji Chrome, działa.

7

W moim przypadku problem ten pojawił się w pliku .png wewnątrz folderu/res/drawable. Jest to błąd, który został zgłoszony jako here. Tak więc, na przyszłość, jeśli masz do czynienia z rysunkiem, sprawdź to. Podsumowując, zaktualizuj swój ADT przynajmniej do wersji 21.0.1.

+9

Twój problem można rozwiązać, czyszcząc kompilację projektu (Projekt | Wyczyść ... | i wybierz projekt do wyczyszczenia). – Aryo

+0

Dzięki temu pomogło mi to. Jeśli czysty projekt nie działa, spróbuj otworzyć jeden plik .png, klikając go prawym przyciskiem myszy i wybierz "Otwórz za pomocą edytora". Po zamknięciu okna edytora błędy zniknęły. –

0

Mam ten sam problem. Był w pliku obrazu .png. Problem wystąpił po tym, jak edytowałem plik. Szukałem rozwiązania, ale po tym oczyściłem swój projekt za pomocą opcji "clean .." w zakładce "project". Więc w końcu pozbyłem że "

2

jakie napotkał ten sam problem. Po debugowania, stwierdziliśmy, że było to spowodowane charakterem«&». Należy uciekł

+0

Miałem ten sam problem, zamień i dla & w moim xml go rozwiązałem, dzięki –

+0

Kiedy nie publikuję napisu "i" wszystko jest w porządku. Mój problem polega na tym, w jaki sposób mogę uniknąć znaku w języku Java, zanim wyślę żądanie. – TWeeKeD

Powiązane problemy