我已经解决了我的问题,我的问题是为什么这段代码会留下旧折线的线段。
注:折线是LatLng 类型的列表
for (int i = 0; i < polyline.size(); ++i)
{
polyline.get(i).remove();
polyline.remove(i);
}
但如果我删除折线.remove(I)(删除列表元素),它的工作原理与预期一样。这是怎么回事?这对我来说没有意义,因为折线.remove(i);是在实际删除多段线之后发生的,所以我希望它不会以任何方式影响它。
for (int i = 0; i < polyline.size(); ++i)
{
polyline.get(i).remove();
}
polyline.clear()
您当前正在删除其他所有元素。
当您移除元素0时,其他所有元素都会"移动",这样就有了一个新的元素0……但您不必理会它,而是转到元素1(它的值与元素2过去的值相同)。
选项:
-
总是从一开始就删除,只需要一个while循环:
while (polyline.size() > 0) { polyline.get(0).remove(); polyline.remove(0); }
-
从末端移除
for (int i = polyline.size() - 1; i >= 0; i--) { polyline.get(i).remove(); polyline.remove(i); }
-
在每行调用remove,然后像在第二个片段中那样清除集合
-
相同,但有一个增强的for循环:
for (LatLng point : polyline) { point.remove(); } polyline.clear();