我已经解决了我的问题,我的问题是为什么这段代码会留下旧折线的片段。
注意:折线是LatLng类型的列表
for (int i = 0; i < polyline.size(); ++i)
{
polyline.get(i).remove();
polyline.remove(i);
}
但如果我删除polyline.remove(i)(删除列表元素),它就会按预期工作。这里发生了什么?这对我来说没有意义,因为polyline.remove(i);实际折线移除后发生,所以我希望它不会以任何方式影响它。
for (int i = 0; i < polyline.size(); ++i)
{
polyline.get(i).remove();
}
polyline.clear()
答案 0 :(得分:4)
您目前正在删除所有其他元素。
当你删除元素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);
}
在每一行上调用删除,然后在您的第二个代码段中清除该集合
同样,但增强了for循环:
for (LatLng point : polyline)
{
point.remove();
}
polyline.clear();