マップピン(バブル)とテキストで構成されるドローアブルを作成したいと思います。バブルは背景にあり、テキストは前景にあるはずです。
このドロウアブルは、_ItemizedOverlay<Item>
_を拡張するクラスBalloonItemizedOverlay
のsuper(drawable)
で渡す必要があります。
つまり、地図に表示されるバブルにテキストを表示したいのです。
Hello Mapviewを使用しています チュートリアル
このメソッドは、リソースからドローアブルを取得し、その上にテキストを描画して、新しいドローアブルを返します。必要なのは、バブルのリソースIDと、必要なテキストを上に付けることだけです。次に、返されたドローアブルをどこにでも渡すことができます。
public BitmapDrawable writeOnDrawable(int drawableId, String text){
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true);
Paint paint = new Paint();
Paint.setStyle(Style.FILL);
Paint.setColor(Color.BLACK);
Paint.setTextSize(20);
Canvas canvas = new Canvas(bm);
canvas.drawText(text, 0, bm.getHeight()/2, Paint);
return new BitmapDrawable(bm);
}
密度を維持するには、このコンストラクタが必要です
BitmapDrawable (Resources res, Bitmap bitmap)
したがって、コンテキストを維持すると、最後のリターンは次のようになります
return new BitmapDrawable(context.getResources(), bm);
これにより、不要なサイズ変更ドローアブルが防止されます。