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

後でオーバーレイを表示/非表示にする場合は、次のように呼び出します。

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

また:

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

それが役に立てば幸い。

于 2012-04-04T09:02:10.483 に答える
0

マップビューの上にクリック可能なイメージビュー (幅/高さを適宜設定し、色を透明にする) を作成できます。これをクリックすると、イースターエッグがトリガーされます。ただし、正しい位置に配置するのは難しい場合があります..

それとは別に、onTouch 関数をオーバーライドして、x、y 座標がボックス内にある場合にイースターエッグをトリガーするカスタム ビューを使用することを想像できます。それ以外の場合は、マップ ビューによって処理されます。しかし、これはイースターエッグにとって大変な作業になる可能性があるように聞こえます..

于 2011-05-27T19:05:48.367 に答える
0

最も簡単な解決策は、目に見えないドローアブルを使用してオーバーレイアイテムとして追加することであることがわかりました。これが私が行ったことであり、期待どおりに機能します。

于 2011-05-31T15:53:36.020 に答える