Osmdroid 中 mapView.getOverlayManager().removeAll() 移除弹窗报错解决方法
在 Osmdroid 中,'removeAll()' 方法的参数是一个 'OverlayPredicate' 对象,该对象用于判断要移除的 Overlay。根据你提供的代码,错误可能是由于缺少导入语句引起的。
请确保导入以下两个类:
import org.osmdroid.views.overlay.Overlay;
import org.osmdroid.views.overlay.infowindow.InfoWindow;
这两个类是 'Overlay' 和 'InfoWindow' 类所在的包路径。如果没有正确导入这两个类,编译器将无法识别这些类并报错。
另外,如果你使用的是 Osmdroid 的最新版本(6.0.3),你也可以使用以下代码来移除弹窗:
mapView.getOverlays().removeIf(overlay -> (overlay instanceof InfoWindow) && !markers.contains(((InfoWindow) overlay).getMarker()));
这个代码使用了 Java 8 的 lambda 表达式,更加简洁方便。但请注意,这个方法只在 Osmdroid 6.0.3 及以上版本中可用。如果你的版本较旧,还是需要使用 'removeAll()' 方法。
原文地址: https://www.cveoy.top/t/topic/o3jX 著作权归作者所有。请勿转载和采集!