2013-03-26 4 views
6

Ich möchte meine Spur mit GPS auf einem Android-Gerät plotten.So zeigen Sie eine bewegte Spur auf Android-Gerät

Ich habe kein Problem, eine fertige Route anzuzeigen, aber es ist schwierig, die Strecke zu zeigen, während ich mich bewege.

Bisher habe ich 2 verschiedene Möglichkeiten gefunden, dies zu tun, aber beide sind nicht besonders zufriedenstellend.

METHOD 1

PolylineOptions track = new PolylineOptions(); 
Polyline poly; 

while (moving) { 
    Latlng coord = new LatLng(lat,lng); // from LocationListener 
    track.add(coord); 
    if (poly != null) { 
     poly.remove(); 
    } 
    poly = map.addPolyline(track); 
} 

dh bauen die Polylinie es vor der Zugabe der neuen Koordinaten zu entfernen und es dann wieder hinzugefügt wird.

Das ist horrend langsam.

METHOD 2

oldcoord = new LatLng(lat,lng);; 

while (moving) { 
    PolylineOptions track = new PolylineOptions(); 
    LatLng coord = new (LatLng(lat,lng); 
    track.add(oldcoord); 
    track.add(coord); 
    map.addPolyline(track); 

    oldcoord = coord; 
} 

dh eine Reihe von einzelnen Polylinien plotten.

Während dies viel schneller rendert als Methode 1, sieht es ziemlich gezackt aus, besonders bei niedrigeren Zoomstufen, weil jede Polylinie quadratisch ist und nur die Ecken sich berühren.

Gibt es einen besseren Weg und wenn ja, was ist das?

Antwort

8

Es gibt eine einfache Lösung mit der 2.0 Maps API. Sie werden eine schöne glatte Routenlinie mit drei Schritten erhalten:

  1. eine Liste von LatLng Punkte erstellen wie:

    List<LatLng> routePoints; 
    
  2. Fügen Sie die Routenpunkte auf der Liste (könnte/sollte getan werden, in einer Schleife):

    routePoints.add(mapPoint); 
    
  3. eine Polylinie erzeugen und die Liste der LatLng Punkte als solche Futtermittel:

Probieren Sie es aus!

+0

Danke für die Antwort. Ich kam schließlich selbst dazu (meine Methode 1). Das Problem, das ich hatte, war, dass, wenn ich durch eine ArrayListe von Koordinaten, die die Polylinie konstruierten und entfernten, die Verarbeitung für immer dauerte. Als ich diese Verarbeitung auf den onChangeListener verlagerte, funktionierte es jedoch wie ein Zauber. –

+0

@PeteH Kannst du mir bitte sagen, was ist mapPoint in der Methode routePoints.add (mapPoint); – Keshav1234

+0

Ein MapPoint ist einfach ein individuelles LatLng-Objekt, d. H. Einer der gewünschten Punkte für Ihre Kartenanzeige – PeteH