如何在谷歌地图v2的默认标记中绘制文本

时间:2013-08-20 12:55:21

标签: android google-maps-markers google-maps-android-api-2

我想在Google地图v2的默认标记中绘制文字。我是通过从drawable中获取自己的图像来完成此操作但是如何在默认标记中更改它。

我的代码是

 marker.icon(BitmapDescriptorFactory
          .fromBitmap(drawTextToBitmap(getApplicationContext(), R.drawable.images,"5")));

drawTextToBitmap方法是。

public static Bitmap drawTextToBitmap(Context gContext,int gResId,String gText) {
    Resources resources = gContext.getResources();
    float scale = resources.getDisplayMetrics().density;
    Bitmap bitmap =
            BitmapFactory.decodeResource(resources, gResId);

    android.graphics.Bitmap.Config bitmapConfig =
            bitmap.getConfig();
    if(bitmapConfig == null) {
        bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888;
    }
    bitmap = bitmap.copy(bitmapConfig, true);

    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setColor(Color.BLACK);
    paint.setTextSize((int) (15 * scale));
    paint.setShadowLayer(1f, 0f, 1f, Color.WHITE);

    Rect bounds = new Rect();
    paint.getTextBounds(gText, 0, gText.length(), bounds);
    int x = (bitmap.getWidth() - bounds.width())/2;
    int y = (bitmap.getHeight() + bounds.height())/2;

    canvas.drawText(gText, x * scale, y * scale, paint);

    return bitmap;
}

我想画那样的文字

enter image description here

2 个答案:

答案 0 :(得分:7)

1.Downlaod the library from

github.com/googlemaps/android-maps-utils

2.使用检查此链接

Using android-maps-utils with ADT

  TextIconGenerator tc = new TextIconGenerator(this);
  Bitmap bmp = tc.makeIcon("hello");

然后将位图设置为地图对象

  .icon(BitmapDescriptorFactory.fromBitmap(bmp))); 
快照

enter image description here

答案 1 :(得分:5)

您可以使用此示例在标记中绘制文本,您必须设置latlong:

public Marker showTextOnMarker(final Context context, final GoogleMap map,
        final LatLng location, final String text, final int padding,
        final int fontSize) {
    Marker marker = null;

    if (context == null || map == null || location == null || text == null
            || fontSize <= 0) {
        return marker;
    }

    final TextView textView = new TextView(context);
    textView.setText(text);
    textView.setTextSize(fontSize);

    final Paint paintText = textView.getPaint();

    final Rect boundsText = new Rect();
    paintText.getTextBounds(text, 0, textView.length(), boundsText);
    paintText.setTextAlign(Align.CENTER);

    final Bitmap.Config conf = Bitmap.Config.ARGB_8888;
    final Bitmap bmpText = Bitmap.createBitmap(boundsText.width() + 2
            * padding, boundsText.height() + 2 * padding, conf);

    final Canvas canvasText = new Canvas(bmpText);
    paintText.setColor(Color.BLACK);

    canvasText.drawText(text, canvasText.getWidth() / 2,
            canvasText.getHeight() - padding - boundsText.bottom, paintText);

    final MarkerOptions markerOptions = new MarkerOptions()
            .position(location)
            .icon(BitmapDescriptorFactory.fromBitmap(bmpText))
            .anchor(0.5f, 1);

    marker = map.addMarker(markerOptions);

    return marker;
}