したがって、アイテム化されたオーバーレイアイテムをクリックした瞬間に、単純なダイアログを表示するだけです。以下の行にさらに何かを作成したいと思います。
Androidフォンでこれを行うにはどうすればよいですか>?
したがって、アイテム化されたオーバーレイアイテムをクリックした瞬間に、単純なダイアログを表示するだけです。以下の行にさらに何かを作成したいと思います。
Androidフォンでこれを行うにはどうすればよいですか>?
ItemizedOverlayをオーバーライドすると、保護されたonTapメソッドがあります。パラメータとしてアイテムインデックスがあります。onTapをオーバーライドし、このインデックスを使用して正しいデータオブジェクトを取得する必要があります。例えば:
@Override
protected boolean onTap(int index) {
getItem(index); \\your overlay item
return true;
}
次に、コードからカスタムダイアログを作成するか、xmlレイアウトを拡張し、正しいレイアウトパラメータを使用してMapViewに追加する必要があります。
MapView.LayoutParams params = new MapView.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, point, 0, 0, MapView.LayoutParams.BOTTOM_CENTER);
params.mode = MapView.LayoutParams.MODE_MAP;
MV.addView(popup, params);
MV-MapViewインスタンス。ポイント-オーバーレイアイテムGeoPoint; ポップアップ-カスタムダイアログビュー。
それを行うメソッドを見つけました。OverlayItemを拡張し、getMarkerをオーバーライドして、新しいドローアブルを返します。
パッケージthis.is.funny;android.content.Contextをインポートします; android.graphics.Canvasをインポートします。 android.graphics.Colorをインポートします; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.NinePatchDrawable;
インポートcom.google.android.maps.GeoPoint; インポートcom.google.android.maps.MapView; インポートcom.google.android.maps.OverlayItem;
パブリッククラスMyOverlayItemはOverlayItemを拡張します{ プライベート文字列タイトル。 プライベートコンテキストctx; プライベートNinePatchDrawablenpd; プライベートRecttextBox; プライベートペイントp;
public MyOverlayItem(Context ctx,GeoPoint point, String title, String snippet) { super(point, title, snippet); this.title=title; this.ctx=ctx; p=new Paint(); } @Override public Drawable getMarker(int stateBitset) { return new MyDrawable(); } /** * * I believe this method is the cleaniest way to do what we want. Not sure about it * @author emmanuel * This private class is a custom drawable with some text inside. */ private class MyDrawable extends Drawable{ @Override public void draw(Canvas c) { textBox = new Rect(); //this is ugly p.setFakeBoldText(true); p.setTextSize(16); p.setAlpha(50); p.getTextBounds(title, 0, title.length(), textBox); //p.setAlpha(255); NinePatchDrawable npd; npd=(NinePatchDrawable)
ctx.getResources()。getDrawable(R.drawable.geoloc);
npd.setBounds(-(textBox.width()/2+15),-(textBox.height()+30),textBox.width()/2+15,0); npd.draw(c); p.setColor(Color.WHITE); p.setAlpha(255); c.drawText(title,-textBox.width()/2,-30,p); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } @Override public void setAlpha(int alpha) { // TODO Auto-generated method stub } @Override public void setColorFilter(ColorFilter cf) { // TODO Auto-generated method stub } }
}