2013-02-13 4 views
28

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

How to draw a path between two markers

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

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

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

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

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

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

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

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

Спасибо Вам

ответ

87

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

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

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

polyline.remove(); 

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

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

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

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

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

polylines.clear(); 

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

+0

Спасибо :) это помогло – akash89

7

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

Вот основная идея: метод «addPolyline»

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 возвращает один ломаный, которая содержит все точки. Когда мне нужно удалить точки, я вызываю метод «удалить» polylineFinal.

polylineFinal.remove(); 
-2

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

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

Хотя это может работать, он считается полезным, чтобы объяснить, почему ваш код работает, и что вы делаете так, что будущее читатели могут лучше понять ваш код. – KhorneHoly

Смежные вопросы