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

Следующий

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

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

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

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

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

Вот как рисуется путь:

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

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

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

Благодарю вас

3 ответа

Решение

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

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() для каждого из них.

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

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

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

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

polylineFinal.remove();

Обновить

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

mMap.clear(); //it will remove all additional objects from map 

и если вы хотите удалить только полилинию, многоугольник, маркер и т. д. или одну, см. ответ @DiskDev выше. В этом случае вы должны отслеживать каждый дополнительный объект, который вы добавляете на карту.

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

    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);
Другие вопросы по тегам