2016-09-28 2 views
2

У меня есть карта, где я буду помещая маркера и соединяющие их с полилиниями:полилиния не удаляется из GoogleMap

PolylineOptions p = new PolylineOptions(); 
p.color(Color.BLUE); 
p.width((float) 7.0); 
Polyline polyLine = this.mMap.addPolyline(p); 
p.add(actualLocation); 
LatLng previousPoint = latLngs.get(latLngs.size() - 2); 
p.add(previousPoint); 
this.polyLines.add(polyLine); 
mMap.addPolyline(p); 

Я сохраняю объект р в ArrayList:

ArrayList<Polyline> polyLines = new ArrayList<>(); 

Когда я удаляю последний маркер, я хочу также удалить последнюю полилинию. Я делаю следующее:

if (polyLines.size() > 0) { 
    Polyline polyLine = polyLines.get(polyLines.size() - 1); 
    polyLine.remove(); 
    polyLines.remove(polyLines.size() - 1); 
} 

Я удаляю маркер, но полилиния хранится на Карте. Я также удаляю его из ArrayList.

Может ли кто-нибудь помочь мне узнать, что происходит? Я попытался сделать полилинию невидимой или изменить цвет, но это не сработает.

+0

Я не совсем знаком с API GoogleMap, но, насколько я могу судить, вам нужно перерисовать полилинии на карте. Очистите карту, а затем снова добавьте ее. – zec

+0

Спасибо за идею. Это сработало! – n4h1n

ответ

1

Это похоже на то, что вы фактически добавляете на карту две полилинии ... Если PolylineOptions() изменяются после присоединения к полилинии, они находятся в одном и том же месте, иначе вы добавляете один из них без позиционирования, за которым следует Второй. В ваш список добавляется только вторая полилиния.

Вместо этого:

PolylineOptions p = new PolylineOptions(); 
p.color(Color.BLUE); 
p.width((float) 7.0); 
Polyline polyLine = this.mMap.addPolyline(p); // Add before location set 
p.add(actualLocation); 
LatLng previousPoint = latLngs.get(latLngs.size() - 2); 
p.add(previousPoint); 
this.polyLines.add(polyLine); 
mMap.addPolyline(p); // Add after location set 

Вы хотите сделать это?

PolylineOptions p = new PolylineOptions(); 
p.color(Color.BLUE); 
p.width((float) 7.0); 
p.add(actualLocation); 
LatLng previousPoint = latLngs.get(latLngs.size() - 2); 
p.add(previousPoint); 
Polyline polyLine = mMap.addPolyline(p); 
this.polyLines.add(polyLine);