2011-07-14 17 views
23

Quiero crear un dibujante, que consiste en un pin de mapa (burbuja) y algo de texto. La burbuja debe estar en segundo plano y el texto en primer plano.Combinar imagen y texto para dibujar

Este dibujable debe pasarse en super(drawable) de la clase BalloonItemizedOverlay que se extiende ItemizedOverlay<Item>.

En otras palabras, quiero mostrar texto en la burbuja que aparece en el mapa.

estoy usando el Hola Mapview tutorial

+2

Danos un código! Al menos intente escribir lo que está explicando aquí y le ayudaremos – iTurki

+0

gracias por una respuesta rápida. De hecho, quiero pasar texto contable dibujable en la clase siguiente MyItemizedOverlay que extiende ItemizedOverlay \t itemizedOverlay = new MyItemizedOverlay (drawable, mapView); \t \t \t \t point = new GeoPoint ((int) (Search.slat [i] * 1E6), (int) (Search.slon [i] * 1E6)); \t \t OverlayItem overlayItem = new OverlayItem (point, Search.address [i], Search.city [i]); – Abhi

+0

¿Podría actualizar su pregunta con el código? Realmente difícil de leer aquí – iTurki

Respuesta

62

Este método toma un dibujable de sus recursos, dibuja un texto en la parte superior de la misma y devuelve la nueva estirable. Todo lo que necesita hacer es darle la identificación del recurso de su burbuja, y el texto que desea en la parte superior. Luego puede pasar el dibujo extraíble donde lo desee.

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

Para preservar la densidad que necesita este constructor

BitmapDrawable (Resources res, Bitmap bitmap) 

Por lo tanto, el mantenimiento de su contexto, la última declaración debe ser algo como

return new BitmapDrawable(context.getResources(), bm); 

Este prevenir un dibujable cambiado el tamaño deseado.

+0

muchas gracias. funciona bien. Gracias de nuevo por la respuesta rápida. En mi drwable, doy el texto como 123 pero solo lo muestra 1.Pienso que, debido a su pequeño tamaño, muestra solo uno. Lo que opinas debo aumentar la imagen grande o cómo puedo aumente el tamaño o hay otro problema, gracias – Abhi

+0

Puede aumentar el tamaño de su burbuja o disminuir el tamaño del texto. Como puede ver, el texto ahora está configurado en el tamaño 20, puede intentar con 10. – Marmoy

+2

Solo quería comentar que esto no funciona con un xml definido dibujable. Como ese tipo de drawable es un GradientDrawable. – toobsco42