Возможно, "скрыть" OverlayItem в Android?
Я работаю над приложением MapView и хочу поместить в программу милое маленькое пасхальное яйцо. То, что я пытаюсь сделать, это иметь оверлейный элемент, который в основном невидим, но при касании вызовет событие для отображения представления.
Теперь на iPhone я выполнил это с помощью setHidden:true для аннотации, которую я не хотел видеть... аннотация все еще была там и была кликабельной, но вы не могли ее увидеть.
Я пытаюсь найти какой-то эквивалентный метод на overlayItem в Android, но ничего не нашел. Является ли мой единственный вариант принять это, чтобы найти / создать прозрачное изображение и добавить его в качестве наложения в mapView? Я могу сделать это, если придется, но есть ли другие варианты? А если нет, может ли кто-нибудь указать мне на относительно небольшое прозрачное изображение?
3 ответа
Я обнаружил, что самым простым решением было просто использовать невидимый объект рисования и добавить его в качестве оверлейного элемента, так что это то, что я сделал, и он работает, как и ожидалось.
Я знаю, что вы нашли способ скрыть свое наложение, но есть более элегантный способ сделать это. Создайте собственный класс наложения:
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);
Надеюсь, поможет.
Вы можете сделать интерактивный просмотр изображения (соответственно установить ширину / высоту и цвет должен быть прозрачным) в верхней части вида карты, который при нажатии вызывает пасхальное яйцо. Однако это может быть трудно правильно расположить.
Кроме того, я могу представить себе использование пользовательского представления, в котором вы переопределяете функцию onTouch, чтобы вызвать пасхальное яйцо, если координаты x,y находятся внутри блока... и в противном случае он обрабатывается представлением карты. Но это звучит так, как будто это может быть много работы для пасхального яйца..