Подтвердить что ты не робот

Как удалить все полилинии с карты

После

Как нарисовать путь между двумя маркерами

Мне пришлось добавить много полилиний между двумя маркерами, чтобы сделать путь.

Один из маркеров перетаскивается, скажем, источник перетаскивается.

Итак, когда пользователь начинает перетаскивать маркер, путь, который был ранее нарисован, должен быть удален, а новый путь между новым источником и пунктом назначения должен быть нарисован.

Я могу нарисовать новый путь, но как я могу стереть предыдущий путь?

Вот как рисован путь:

    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));
    }

Одно из решений, которое я могу получить, это

map.clear();

Очистить все полилинии, маркеры и т.д. и снова добавить маркеры, затем нарисовать путь.

Но как только я начну перетаскивать, маркер очищается, следовательно, он не отображается на карте: (

Спасибо

4b9b3361

Ответ 1

Следите за полилинией при добавлении ее на карту:

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

Затем, когда вы хотите удалить его:

polyline.remove();

Если у вас много полилиний, просто добавьте их в список по мере их размещения на карте:

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

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

И когда вы хотите удалить:

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

polylines.clear();

Ключ должен содержать ссылку на объекты Polyline и вызывать .remove() на каждом из них.

Ответ 2

Я знаю, что это очень старый вопрос, но я заметил, что это очень распространенная потребность. Я нашел другой способ, и я хотел бы поделиться им.

Вот основная идея:

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);

Map "addPolyline" метод возвращает одну полилинию, содержащую все точки. Когда мне нужно удалить точки, я вызываю метод polylineFinal "remove".

polylineFinal.remove();

Ответ 3

Я использовал эту работу:)

    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);