Google zmieniło swoje API map dla Androida i wprowadziło API V2. Poprzednie kody ścieżki rysowania nie działają z API V2.
Udało mi się narysować ścieżkę za pomocą API V2. Dużo szukałem rozwiązania, ale nie znalazłem odpowiedzi. Więc dzielę się odpowiedzią.
google-maps
path
google-maps-markers
routes
google-maps-android-api-2
Zeeshan Mirza
źródło
źródło
Odpowiedzi:
Przede wszystkim uzyskamy punkty źródłowe i docelowe, pomiędzy którymi musimy wyznaczyć trasę. Następnie przekażemy te atrybuty do poniższej funkcji.
Ta funkcja utworzy adres URL, który wyślemy, aby uzyskać odpowiedź API Direction. Następnie przeanalizujemy tę odpowiedź. Klasa parsera to
Ten parser zwróci nam ciąg. Nazwiemy to tak.
Teraz wyślemy ten ciąg do naszej funkcji drawpath. Funkcja drawpath to
Powyższy kod narysuje ścieżkę na mMap. Kod decodePoly to
Ponieważ wywołanie kierunku może zająć trochę czasu, zrobimy to wszystko w zadaniu asynchronicznym. Moje zadanie asynchroniczne to
Mam nadzieję, że to pomoże.
źródło
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLUE).geodesic(true); for (int z = 0; z < list.size(); z++) { LatLng point = list.get(z); options.add(point); } line = myMap.addPolyline(options);
Requests to this API must be over SSL
, zmieńhttp
nahttps
key
parametr wmakeURL
funkcji, w przeciwnym razie otrzymałemThis IP, site or mobile application is not authorized to use this API key
. Zmień też adres URL nahttps
zamiast,http
jak wspomniał AlvaroSantisteban.Nie wiem, czy mam to odpowiedzieć, czy nie ...
Użyłem rozwiązania @ Zeeshan0026, aby narysować ścieżkę ... i problem polegał na tym, że jeśli narysuję ścieżkę raz, a potem spróbuję narysować ścieżkę jeszcze raz, obie ścieżki pokazują i to trwa ... ścieżki pokazujące nawet wtedy, gdy znaczniki były usunięte ... podczas gdy najlepiej byłoby, gdyby stare ścieżki nie istniały po narysowaniu nowej ścieżki / usunięciu znaczników.
przechodząc przez inne pytanie na temat SO, miałem następujące rozwiązanie
Dodaję następującą funkcję w klasie Zeeshana
w mojej aktywności na mapie, przed narysowaniem ścieżki, nazwałem tę funkcję .. przykład użycia zgodnie z moją aplikacją
możesz używać
rt.clearRoute();
zgodnie ze swoimi wymaganiami .. Mam nadzieję, że zaoszczędzi to kilka minut komuś innemu i pomoże początkującym w rozwiązaniu tego problemu.Uzupełnij kod klasy
zobacz na github
Edycja: tutaj jest część kodu z głównej aktywności.
Edytuj 2 zgodnie z komentarzami
stosowanie :
źródło
w poniższym kodzie midpointsList to ArrayList of waypoints
Następnie skopiuj i wklej ten adres URL w przeglądarce, aby sprawdzić, a poniższy kod służy do analizowania adresu URL
A następnie przekaż wynik do metody drawPath
Funkcja decode poly polega na dekodowaniu punktów (szerokości i długości) dostarczonych przez Directions API w postaci zakodowanej
źródło
Wypróbuj poniższe rozwiązanie, aby narysować ścieżkę z animacją, a także uzyskać czas i odległość między dwoma punktami.
DirectionHelper.java
GetPathFromLocation.java
DirectionPointListener
Teraz narysuj ścieżkę, używając poniższego kodu w swojej Aktywności
Wynik
Mam nadzieję, że to ci pomoże!
Dziękuję Ci.
źródło