我已经解决了我的问题,我的问题是为什么这段代码会留下旧折线段。
注意:折线是 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 时,其他所有元素都会“移动”,从而出现一个新的元素 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();
关于java - 为什么这条谷歌地图折线没有删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18366414/