webentwicklung-frage-antwort-db.com.de

So entfernen Sie alle Polylinien von einer Karte

Im Anschluss

Wie zeichnet man einen Pfad zwischen zwei Markierungen

Ich musste viele Polylinien zwischen zwei Markierungen einfügen, um einen Pfad zu erstellen.

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

Wenn der Benutzer mit dem Ziehen der Markierung beginnt, muss der zuvor gezeichnete Pfad gelöscht und ein neuer Pfad zwischen neuer Quelle und Ziel gezeichnet werden.

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

So wird der Pfad gezeichnet:

    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 erneut hinzuzufügen, zeichnen Sie den Pfad.

Sobald ich mit dem Ziehen beginne, wird die Markierung gelöscht und ist daher auf der Karte nicht mehr sichtbar :(

Danke

48
Archie.bpgc

Behalten Sie die Polylinie im Auge, wenn Sie sie der Karte hinzufügen:

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

Dann, wenn Sie es entfernen möchten:

polyline.remove();

Wenn Sie viele Polylinien haben, fügen Sie diese einfach zu einer Liste hinzu, sobald sie auf der Karte angezeigt 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 besteht darin, einen Verweis auf die Polyline-Objekte zu behalten und .remove () für jedes Objekt aufzurufen.

123
DiscDev

Ich weiß, dass dies eine sehr alte Frage ist, aber mir ist aufgefallen, dass dies ein sehr häufiges Bedürfnis ist. Ich habe einen anderen Weg gefunden und wollte ihn 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);

Die Methode "addPolyline" von Map gibt eine einzelne Polylinie zurück, die alle Punkte enthält. Wenn ich die Punkte entfernen muss, rufe ich die Methode "remove" von polylineFinal auf.

polylineFinal.remove();
8
kizanlik