Возможно, «скрыть» OverlayItem в Android? - PullRequest
2 голосов
/ 27 мая 2011

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

Теперь на iPhone я выполнил это с помощью setHidden: true для аннотации, которую я не хотел видеть ... аннотация все еще была там и все еще была активной, но вы не могли ее увидеть.

Я пытаюсь найти какой-то эквивалентный метод для overlayItem в Android, но ничего не нашел. Является ли мой единственный вариант принять это, чтобы найти / создать прозрачное изображение и добавить его в качестве наложения в mapView? Я могу сделать это, если придется, но есть ли другие варианты? А если нет, то может ли кто-нибудь указать мне на относительно небольшое прозрачное изображение?

Ответы [ 3 ]

4 голосов
/ 04 апреля 2012

Я знаю, что вы нашли способ скрыть свое наложение, но есть более элегантный способ сделать это.Создайте пользовательский класс для вашего оверлея:

public class MapOverlay extends Overlay{

    private Boolean visible;

    public MapOverlay(){
        this.visible = true;
    }   

    public void draw(Canvas canvas, MapView mapv, boolean shadow){
        super.draw(canvas, mapv, shadow);

        if (visible) {
            // draw what you want
        }
    }

    public Boolean isVisible() {
        return visible;
    }

    public void isVisible(Boolean visible) {
        this.visible = visible;
    }

    public void toggleVisible() {
        this.visible = !visible;
    }
}

Затем в своей деятельности добавьте оверлеи как обычно:

mapView.getOverlays().addOverlay(new MapOverlay());

Позже, если вы хотите показать / скрыть ваше оверлей, просто позвоните:

mapView.getOverlays().get(0).toggleVisible();

или:

mapView.getOverlays().get(0).isVisible(false);

Надеюсь, это поможет.

0 голосов
/ 31 мая 2011

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

0 голосов
/ 27 мая 2011

Вы можете сделать интерактивный просмотр изображения (соответственно установить ширину / высоту и цвет должен быть прозрачным) в верхней части вида карты, который при нажатии запускает пасхальное яйцо. Однако это может быть трудно правильно расположить ..

Кроме того, я могу представить себе использование пользовательского представления, в котором вы переопределяете функцию onTouch, чтобы вызвать пасхальное яйцо, если координаты x, y находятся внутри поля ... и в противном случае оно обрабатывается представлением карты. Но это звучит так, как будто это может быть много работы для пасхального яйца ..

...