如何在Android中一键删除地图视图中的所有标记?

发布于 2024-10-11 07:47:24 字数 447 浏览 7 评论 0原文

我在地图上有 2 个标记,我想在用户单击按钮时删除它们。这是我的方法:

 public void deleteAllMarkers() {
    if(mapView.getOverlays().size() !=0) { 
        //Log.d("MAPA ",Integer.toString(mapView.getOverlays().size()));
        for (int i=0; i<mapView.getOverlays().size(); i++ ) {
            mapView.getOverlays().remove(i);
        }
        mapView.postInvalidate();
    }   
}

问题是我必须按两次按钮才能删除两个标记,因为第一次按后只有 1 个标记消失。

我做错了什么?

I have 2 markers on the map and i want to delete them when the user clicks on a button. This is my method:

 public void deleteAllMarkers() {
    if(mapView.getOverlays().size() !=0) { 
        //Log.d("MAPA ",Integer.toString(mapView.getOverlays().size()));
        for (int i=0; i<mapView.getOverlays().size(); i++ ) {
            mapView.getOverlays().remove(i);
        }
        mapView.postInvalidate();
    }   
}

The problem is that i have to press my button twice to get rid of both markers, because after the first press only 1 marker disappears.

What am i doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

像你 2024-10-18 07:47:24

.size() 将在每次迭代时重新评估,即在删除元素 0 之后。

这样写会更容易:

mapView.getOverlays().clear();

.size() will get re-evaluated on each iteration, i.e. after you've removed element 0.

It would be easier to write:

mapView.getOverlays().clear();
谈情不如逗狗 2024-10-18 07:47:24

更公平的解决方案是仅删除标记,而不删除任何其他布局(如 Compas、版权等)

mapView.overlays
                .forEach { (it as? Marker)?.remove(mapView) }

The more fair solution is removing only Markers without any other layouts (like Compas, Copyright, etc)

mapView.overlays
                .forEach { (it as? Marker)?.remove(mapView) }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文