我想创建一个drawable,它由一个map pin(bubble)和一些文本组成。气泡应该在背景中,文本在前景中。
此drawable应传递到super(drawable)
的{{1}} BalloonItemizedOverlay
,其范围为ItemizedOverlay<Item>
。
换句话说,我想在地图中显示的气泡中显示文字。
我正在使用Hello Mapview tutorial
答案 0 :(得分:62)
此方法从您的资源中获取一个drawable,在其上绘制一些文本并返回新的drawable。您需要做的就是为它提供泡泡的资源ID,以及您想要的文本。然后,您可以将返回的drawable传递到任何您想要的位置。
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);
这可以防止意外调整大小的drawable。