我有地图视图,其中包含很多地方的别针,每个别针都可以在其上方显示气球。但是当我按下另一个大头针时,旧的气球不会自动关闭,所以我想每次在其他气球显示之前清除气球
(我扩展了 BalloonItemizedOverlay)
请帮忙,谢谢。
我有地图视图,其中包含很多地方的别针,每个别针都可以在其上方显示气球。但是当我按下另一个大头针时,旧的气球不会自动关闭,所以我想每次在其他气球显示之前清除气球
(我扩展了 BalloonItemizedOverlay)
请帮忙,谢谢。
以下代码从地图中删除所有 BalloonOverlayItems:
MapView.removeViews(0, MapView.getChildCount());
它相当于 MapView.getOverlays().clear()(用于常规叠加),上面的代码适用于包含气球叠加的地图。
/**
* Sets the visibility of this overlay's balloon view to GONE.
*/
private void hideBalloon() {
if (balloonView != null) {
balloonView.setVisibility(View.GONE);
}
}
/**
* Hides the balloon view for any other BalloonItemizedOverlay instances
* that might be present on the MapView.
*
* @param overlays - list of overlays (including this) on the MapView.
*/
private void hideOtherBalloons(List<Overlay> overlays) {
for (Overlay overlay : overlays) {
if (overlay instanceof BalloonItemizedOverlay<?> && overlay != this) {
((BalloonItemizedOverlay<?>) overlay).hideBalloon();
}
}
}
也许为时已晚,但我想我今天也面临同样的问题。
当您使用 删除项目时mapView.getOverlays().clear()
,所有项目都将被删除。但是,如果您查看方法中的“createAndDisplayBalloonOverlay”,BalloonItemizedOverlay.java
您会看到该行mapView.addView(balloonView, params);
,因此mapView
请将气球的引用保留为子项。这就是为什么你的别针不见了但气球1仍然显示的原因。
快速修复将是在删除项目后BalloonOverlayView
使用方法删除所有实例。mapView.removeViewAt()
还取决于您的实施,您可能需要保留当前显示的气球。