为什么这个谷歌地图折线没有删除



我已经解决了我的问题,我的问题是为什么这段代码会留下旧折线的线段。

注:折线是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();
    

最新更新