Как показать шар только 1 шар на 1 карте? - PullRequest
0 голосов
/ 06 октября 2011

У меня есть вид карты, который содержит много булавок места, каждый булавка может показать воздушный шар над своим.но когда я нажимаю другую булавку, всплывающее окно старого не закрывается автоматически, поэтому я хочу очистить всплывающее окно каждый раз, пока другой шарик не покажет

(я расширяю BalloonItemizedOverlay)

пожалуйстапомогите, спасибо.

Ответы [ 3 ]

2 голосов
/ 07 апреля 2012

Следующий код удаляет все элементы BalloonOverlayItems с карты:

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

Это эквивалент MapView.getOverlays (). Clear () (используется для обычных наложений), приведенный выше код работает для картыс наложениями Balloon.

1 голос
/ 06 октября 2011

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

        }
0 голосов
/ 24 февраля 2012

Может быть, уже слишком поздно, но я думаю, что столкнулся с той же проблемой сегодня.

При удалении элементов с помощью mapView.getOverlays().clear() все элементы удаляются. Но если вы посмотрите на метод createAndDisplayBalloonOverlay в BalloonItemizedOverlay.java, вы увидите строку mapView.addView(balloonView, params);, поэтому mapView сохранит ссылку на воздушный шар как дочерний. Вот почему твоя булавка исчезла, но шар1 все еще показывает.

Быстрое решение состоит в том, чтобы удалить все экземпляры BalloonOverlayView с методом mapView.removeViewAt() после удаленных элементов. Также зависит от вашей реализации, может быть, вам нужно будет сохранить текущий отображаемый всплывающий значок.

...