0

カスタムマーカーアイコンを使用して表示しています。緑色で表示されます。マーカーがタップされたとき、マーカーに他のアイコンを適用する方法。私のコードは次のとおりです

   Bitmap bmp;
   bmp=writeTextOnDrawable(context,R.drawable.green,("Hello"));


    @Override
public void onInfoWindowClick(final Marker marker)
    {
    // how to change color of marker color/icon when it tap.
    }


private Bitmap writeTextOnDrawable(Context context,int drawableId, String text) {

        Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId)
                .copy(Bitmap.Config.ARGB_8888, true);

        Typeface tf = Typeface.create("Helvetica", Typeface.BOLD);

        Paint paint = new Paint();
        paint.setStyle(Style.FILL);
        paint.setColor(Color.WHITE);
        paint.setTypeface(tf);
        paint.setTextAlign(Align.CENTER);
        paint.setTextSize(convertToPixels(context, 8));

        Rect textRect = new Rect();
        paint.getTextBounds(text, 0, text.length(), textRect);

        Canvas canvas = new Canvas(bm);

        //If the text is bigger than the canvas , reduce the font size
        if(textRect.width() >= (canvas.getWidth() - 4))     //the padding on either sides is considered as 4, so as to appropriately fit in the text
            paint.setTextSize(convertToPixels(context, 7));        //Scaling needs to be used for different dpi's

        //Calculate the positions
        int xPos = (canvas.getWidth() / 2) - 2;     //-2 is for regulating the x position offset

        //"- ((paint.descent() + paint.ascent()) / 2)" is the distance from the baseline to the center.
        int yPos = (int) ((canvas.getHeight() / 2) - ((paint.descent() + paint.ascent()) / 2)) ;  

        canvas.drawText(text, xPos, yPos, paint);

        return  bm;
    }

    private float convertToPixels(Context context, int nDP) {
        // TODO Auto-generated method stub
         final float conversionScale = context.getResources().getDisplayMetrics().density;

            return (int) ((nDP * conversionScale) + 0.5f) ;
    }
4

1 に答える 1

0

使用しているマップ API のバージョンを確認してください。2013 年 5 月、メソッド setIcon() がクラス Marker に追加されました。( https://developers.google.com/maps/documentation/android/releasesを参照)

したがって、onInfoWindowClick 内でアイコンを新しいもの (別の色) に置き換えることができるはずです。

于 2013-10-10T10:59:02.657 に答える