web-dev-qa-db-fra.com

Combinez l'image et le texte à destination de

Je veux créer un sable, qui consiste en une broche de carte (bulle) et du texte. La bulle devrait être à l'arrière-plan et le texte au premier plan.

Ce digue doit être transmis dans super(drawable) de la classe BalloonItemizedOverlay qui s'étend ItemizedOverlay<Item>.

En d'autres termes, je veux montrer du texte dans la bulle qui apparaît sur la carte.

J'utilise le Hello MapView tutoriel

23
Abhi

Cette méthode prend un sable de vos ressources, dessine du texte sur le dessus et renvoie le nouveau destinataire. Tout ce que vous avez à faire est de lui donner l'ID de ressource de votre bulle et du texte que vous souhaitez sur le dessus. Ensuite, vous pouvez passer le retourné introduit où que vous sachiez.

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

Pour conserver la densité, vous avez besoin de ce constructeur

BitmapDrawable (Resources res, Bitmap bitmap)

Donc, garder votre contexte, le dernier retour devrait être quelque chose comme

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

Cela empêche un redessinement redimensionné.

62
Marmoy