2013-02-13 14 views
28

Wie alle Polylinien entfernen aus einer Karte

How to draw a path between two markers

Nach hatte ich zwischen zwei Markern viel Polylinien hinzuzufügen, um einen Weg zu machen.

Einer der Marker ist ziehbar, sagen wir, Quelle ist ziehbar.

Wenn der Benutzer beginnt, den Marker zu ziehen, muss der zuvor gezeichnete Pfad gelöscht werden und ein neuer Pfad zwischen neuer Quelle und Ziel muss gezeichnet werden.

Ich kann den neuen Pfad zeichnen, aber wie kann ich den vorherigen Pfad löschen?

Dies ist, wie der Pfad gezeichnet wird:

for (int z = 0; z < list.size() - 1; z++) { 
     LatLng src = list.get(z); 
     LatLng dest = list.get(z + 1); 
     Polyline line = map.addPolyline(new PolylineOptions() 
       .add(new LatLng(src.latitude, src.longitude), 
         new LatLng(dest.latitude, dest.longitude)) 
       .width(2).color(Color.RED).geodesic(true)); 
    } 

Eine Lösung, die ich bekommen kann, ist

map.clear();

Um alle Polylinien, Markierungen usw. zu löschen und die Markierungen wieder hinzuzufügen, dann den Pfad gezeichnet.

Aber sobald ich anfange ziehen, die Markierung wird gelöscht, also nicht sichtbar auf der Karte :(

Danke

Antwort

87

Spur des Linienzug halten, wie Sie es auf die Karte hinzufügen:

Polyline polyline = this.mMap.addPolyline(new PolylineOptions().....); 

Dann, wenn Sie möchten, um es entfernen:

polyline.remove(); 

Wenn Sie viele Polylines haben , Fügen Sie sie einfach auf eine Liste, wie sie auf der Karte gesetzt werden:

List<Polyline> polylines = new ArrayList<Polyline>(); 

for(....) 
{ 
    polylines.add(this.mMap.addPolyline(new PolylineOptions()....)); 
} 

Und wenn Sie löschen möchten:

for(Polyline line : polylines) 
{ 
    line.remove(); 
} 

polylines.clear(); 

Der Schlüssel ist, einen Verweis auf die Polylinie Objekte und Anruf zu halten. entferne() auf jedem.

+0

Thanks :) es – akash89

7

Ich weiß, das ist sehr alte Frage, aber ich habe festgestellt, dass dies sehr häufig ist. Ich habe einen anderen Weg gefunden und ich wollte es teilen. Hier

ist die Grundidee:

Polyline polylineFinal; 
PolylineOptions polylineOptions; 

loop { 

    polylineOptions.add(new LatLng(latitude, longitude)); 

} 

polylineOptions.width(2); 
polylineOptions.color(Color.RED); 
polylineOptions.geodesic(true); 

polylineFinal = map.addPolyline (polylineOptions); 

-Karte „addPolyline“ Methode gibt eine einzelne Polylinie, die alle Punkte enthält. Wenn ich die Punkte entfernen muss, rufe ich die "remove" -Methode von polylineFinal auf.

polylineFinal.remove(); 
-2

benutzte ich diese Arbeit :)

private GoogleMap mMapView; 

    SupportMapFragment myMapFragment = (SupportMapFragment)getSupportFragmentManager() 
    .findFragmentById(R.id.mMapView3); 
    mMapView = myMapFragment.getMap(); 

    PolylineOptions rectLine = new PolylineOptions() 
        .add(new LatLng(13.000000, 100.000000)) 
        .add(new LatLng(13.010000, 100.000000)); 

      mMapView.addPolyline(rectLine); 
+0

geholfen Während dies funktionieren kann, ist es hilfreich, als zu erklären, warum Ihr Code funktioniert und was Sie tun, so dass die Zukunft Leser können Ihren Code besser verstehen. – KhorneHoly

Verwandte Themen