java - 为什么这条谷歌地图折线没有删除?

标签 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()

最佳答案

您当前正在删除所有其他元素

当你删除元素 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/

相关文章:

java - 如何为 Mac OS 10.6 下载 Java SE 1.5

android - 如何使用 Android 文档的多个字段在 Firestore 中进行搜索?

android - 如何在我的 Android Widget 类中构建我的 onReceive 方法来切换 ImageView 的图像?

javascript - 使用 javascript 和 Angularjs 循环

java - 尝试使用资源为什么不能修改资源

java - 有没有办法将 MySql TIMESTAMP 映射到 java.lang.Long?

java - 页面上出现 NullPointerException

android - 如何运行与 Google 通讯录更新的同步过程?

java - 如何将类返回到 onPostExecute?

ios - 如何从 Google API 获取仅与健康相关的数据?