Google hat seine Karten-API für Android geändert und API V2 eingeführt. Die vorherigen Codes für den Zeichenpfad funktionieren nicht mit API V2.
Ich habe es geschafft, einen Pfad mit API V2 zu zeichnen. Ich hatte viel nach der Lösung gesucht, aber keine Antwort gefunden. Also teile ich seine Antwort.
google-maps
path
google-maps-markers
routes
google-maps-android-api-2
Zeeshan Mirza
quelle
quelle
Antworten:
Zunächst erhalten wir Quell- und Zielpunkte, zwischen denen wir die Route zeichnen müssen. Dann werden wir dieses Attribut an die folgende Funktion übergeben.
Diese Funktion erstellt die URL, die wir senden, um die Antwort der Richtungs-API zu erhalten. Dann werden wir diese Antwort analysieren. Die Parser-Klasse ist
Dieser Parser gibt uns einen String zurück. Wir werden es so nennen.
Jetzt senden wir diesen String an unsere Drawpath-Funktion. Die Drawpath-Funktion ist
Der obige Code zeichnet den Pfad auf mMap. Der Code von decodePoly lautet
Da der Richtungsaufruf einige Zeit dauern kann, werden wir dies alles in der asynchronen Aufgabe tun. Meine asynchrone Aufgabe war
Ich hoffe es wird helfen.
quelle
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
, wechseln Siehttp
zuhttps
key
Parameter in diemakeURL
Funktion einfügen , sonst bekam ichThis IP, site or mobile application is not authorized to use this API key
. Ändern Sie auch die URL inhttps
anstelle vonhttp
AlvaroSantisteban.Ich weiß nicht, ob ich das als Antwort setzen soll oder nicht ...
Ich habe die Lösung von @ Zeeshan0026 verwendet, um den Pfad zu zeichnen ... und das Problem war, dass, wenn ich den Pfad einmal zeichne und dann erneut versuche, den Pfad zu zeichnen, beide Pfade angezeigt werden und dies fortgesetzt wird ... Pfade werden angezeigt, selbst wenn Markierungen vorhanden waren gelöscht ... während im Idealfall alte Pfade nicht vorhanden sein sollten, sobald ein neuer Pfad gezeichnet / Markierungen gelöscht wurden.
Als ich eine andere Frage über SO durchging, hatte ich die folgende Lösung
Ich füge die folgende Funktion in Zeeshans Klasse hinzu
In meiner Kartenaktivität habe ich vor dem Zeichnen des Pfads diese Funktion aufgerufen. Beispiel für die Verwendung gemäß meiner App
Sie können es
rt.clearRoute();
gemäß Ihren Anforderungen verwenden. In der Hoffnung, dass es ein paar Minuten von jemand anderem spart und einigen Anfängern bei der Lösung dieses Problems hilft.Vollständiger Klassencode
siehe auf Github
Bearbeiten: Hier ist ein Teil des Codes aus der Hauptaktivität.
Bearbeiten 2 gemäß den Kommentaren
Verwendung :
quelle
im folgenden Code midpointsList ist eine ArrayList von Wegpunkten
Kopieren Sie diese URL und fügen Sie sie in Ihren Browser ein, um sie zu überprüfen. Der folgende Code dient zum Parsen der URL
Übergeben Sie das Ergebnis dann an die drawPath-Methode
Die Decode-Poly-Funktion dient zum Decodieren der von der Directions-API bereitgestellten Punkte (lat und long) in codierter Form
quelle
Versuchen Sie die folgende Lösung, um einen Pfad mit Animation zu zeichnen und Zeit und Abstand zwischen zwei Punkten zu ermitteln.
DirectionHelper.java
GetPathFromLocation.java
DirectionPointListener
Zeichnen Sie nun den Pfad mit dem folgenden Code in Ihrer Aktivität
Ausgabe
Ich hoffe das kann dir helfen!
Danke.
quelle