可能会“隐藏”Android中的OverlayItem吗?

时间:2011-05-27 18:40:07

标签: android android-mapview overlayitem

我正在开发一个MapView应用程序,并希望在程序中放置一个漂亮的小复活节彩蛋。我想要做的是有一个基本上看不见的重叠项,但是当点击时会触发一个事件来显示视图。

现在在iPhone上我通过使用setHidden来实现这一点:我不希望看到注释中的注释...注释仍然存在但仍然可以点击,但你看不到它。

我试图在Android中的overlayItem上找到一些等效的方法,但什么也没找到。是我唯一的选择,以找到/创建透明图像并将其添加为mapView的叠加层?如果必须,我可以这样做,但还有其他选择吗?如果不是,任何人都可以指向一个相对较小的透明图像吗?

3 个答案:

答案 0 :(得分:4)

我知道你找到了隐藏叠加层的方法,但有更优雅的方法可以做到这一点。 制作叠加层的自定义类:

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);

希望它有所帮助。

答案 1 :(得分:0)

您可以在地图视图的顶部创建一个可点击的图像视图(相应地设置宽度/高度,颜色为透明),点击该视图时会触发复活节彩蛋。但是,正确定位可能很困难。

除此之外,我可以想象使用自定义视图,如果x,y坐标在一个框内,则覆盖onTouch函数以触发复活节彩蛋......否则它将被地图视图处理。但这听起来像复活节彩蛋可能会有很多工作......

答案 2 :(得分:0)

我发现最简单的解决方案是使用一个不可见的drawable并将其添加为overlayitem,所以这就是我所做的并且它按预期工作。