2011-07-14 9 views
23

マップピン(バブル)とテキストで構成される描画可能オブジェクトを作成したいとします。バブルは背景に、テキストはフォアグラウンドに配置する必要があります。イメージとテキストを描画可能に結合する

このドロアブルは、ItemizedOverlay<Item>を拡張するクラスBalloonItemizedOverlaysuper(drawable)で渡す必要があります。

つまり、マップに表示されるバブルにテキストを表示したいとします。

私はこんにちはのMapViewにtutorial

+2

コードを入力してください。少なくともここで説明する内容を書こうとすれば、私たちは助けてくれるでしょう – iTurki

+0

素早く応答してくれてありがとう実際には、ItemizedOverlayを継承するMyItemizedOverlayを描画可能なテキストに引き渡したいと思っています \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 =新しいオーバーレイアイテム(ポイント、Search.address [i]、Search.city [i]); – Abhi

+0

あなたの質問をコードで更新できますか?本当にここで読むことは難しい – iTurki

答えて

62

を使用しています。この方法では、あなたのリソースから描画可能になります、その上にいくつかのテキストを描画し、新しい描画可能を返します。あなたがする必要があるのは、あなたのバブルのリソース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); 

のようなものでなければなりません。

+0

ありがとうございます。それはうまく働いています。素早く返事をしてくれてありがとうございました。私のドローワブルではテキストを123としていますが、それは1しか表示していません。小さなサイズのために1つしか表示されないと思います。サイズを増やすか、その他の問題があります。 – Abhi

+0

バブルのサイズを大きくするか、テキストのサイズを小さくすることができます。テキストがサイズ20に設定されているのを見れば、10で試してみることができます。 – Marmoy

+2

xmlで定義されたドロウアブルでは機能しないとコメントしたかっただけです。そのようなドロアブルはGradientDrawableです。 – toobsco42

関連する問題