在osmdroid 中 mapViewgetOverlayManagerremoveAllnew OverlayPredicate Override public boolean evaluateOverlay overlay return overlay instanceof InfoWind
在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/hAzl 著作权归作者所有。请勿转载和采集!