2

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

现在在 iPhone 上,我通过在我不想看到的注释上使用 setHidden:true 来实现这一点。注释仍然存在并且仍然可以点击,但是你看不到它。

我试图在 Android 中的 overlayItem 上找到一些等效的方法,但什么也没找到。我唯一的选择是完成这个以查找/创建透明图像并将其作为覆盖添加到 mapView 吗?如果必须,我可以这样做,但还有其他选择吗?如果没有,谁能指出我相对较小的透明图像?

4

3 回答 3

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

Later, if you want to show/hide your overlay, simply call:

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

or:

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

Hope it helps.

于 2012-04-04T09:02:10.483 回答
0

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

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

于 2011-05-27T19:05:48.367 回答
0

我发现最简单的解决方案是只使用一个不可见的可绘制对象并将其添加为覆盖项,所以这就是我所做的并且它按预期工作。

于 2011-05-31T15:53:36.020 回答