为什么此Google地图折线未删除?

时间:2013-08-21 19:51:10

标签: java android google-maps

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

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

1 个答案:

答案 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();