0

我有地图视图,其中包含很多地方的别针,每个别针都可以在其上方显示气球。但是当我按下另一个大头针时,旧的气球不会自动关闭,所以我想每次在其他气球显示之前清除气球

(我扩展了 BalloonItemizedOverlay)

请帮忙,谢谢。

4

3 回答 3

2

以下代码从地图中删除所有 BalloonOverlayItems:

  MapView.removeViews(0, MapView.getChildCount());

它相当于 MapView.getOverlays().clear()(用于常规叠加),上面的代码适用于包含气球叠加的地图。

于 2012-04-07T15:45:37.950 回答
1

来自BallonItemizerOverlay.java

        /**
         * 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();
                        }
                }

        }
于 2011-10-06T10:07:16.997 回答
0

也许为时已晚,但我想我今天也面临同样的问题。

当您使用 删除项目时mapView.getOverlays().clear(),所有项目都将被删除。但是,如果您查看方法中的“createAndDisplayBalloonOverlay”,BalloonItemizedOverlay.java您会看到该行mapView.addView(balloonView, params);,因此mapView请将气球的引用保留为子项。这就是为什么你的别针不见了但气球1仍然显示的原因。

快速修复将是在删除项目后BalloonOverlayView使用方法删除所有实例。mapView.removeViewAt()还取决于您的实施,您可能需要保留当前显示的气球。

于 2012-02-23T22:12:33.683 回答