我正在开发一个MapView应用程序,并希望在程序中放置一个漂亮的小复活节彩蛋。我想要做的是有一个基本上看不见的重叠项,但是当点击时会触发一个事件来显示视图。
现在在iPhone上我通过使用setHidden来实现这一点:我不希望看到注释中的注释...注释仍然存在但仍然可以点击,但你看不到它。
我试图在Android中的overlayItem上找到一些等效的方法,但什么也没找到。是我唯一的选择,以找到/创建透明图像并将其添加为mapView的叠加层?如果必须,我可以这样做,但还有其他选择吗?如果不是,任何人都可以指向一个相对较小的透明图像吗?
答案 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,所以这就是我所做的并且它按预期工作。