如何在1张地图中显示气球只有1个气球?

时间:2011-10-06 08:53:07

标签: android android-mapview itemizedoverlay

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

(我扩展了BalloonItemizedOverlay)

请帮助,谢谢。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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();
                        }
                }

        }

答案 2 :(得分:0)

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

使用mapView.getOverlays().clear()删除项目时,会删除所有项目。 但是,如果您在BalloonItemizedOverlay.java中查看方法'createAndDisplayBalloonOverlay',您会看到行mapView.addView(balloonView, params);,因此mapView会将气球的引用保留为子项。这就是为什么你的针已经消失但气球1仍然显示。

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