noni_methadoni noni_methadoni - 5 months ago 37
Android Question

Show text on polygon android Google map v2

I am using polygons on map and I want to have a text on them. Is there any possible way to do this?
I tried to put simple text on map point but didn't make it.

private void addPolygon(Region reg) {
PolylineOptions polylineOptions = new PolylineOptions();
ArrayList<LatLng> coordList=reg.getAllPoints();
int regColor = reg.getColor();
String regName = reg.getName();
//want to put a name on region
if (regColor != 0)
//text on shape?


You can create a Marker with a custom icon, and draw the text on that icon. You can use a method like this:

public Marker addText(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);

    final Paint paintText = textView.getPaint();

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

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

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

    final MarkerOptions markerOptions = new MarkerOptions()
            .anchor(0.5f, 1);

    marker = map.addMarker(markerOptions);

    return marker;

You will need to set the location LatLng of the marker and you will have to calculate it from your Region (for example the first point of the geometry, the last point, a random point, the centroid, ...).

Also, take into account that drawing a lot of markers will have a negative effect in the performance.