You can create a Marker using a custom icon and draw text on that icon. You can use this method:
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); 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; }
You will need to set the location of the LatLng marker, and you will need to calculate it from your Region (e.g., first geometry point, last point, random point, centroid, ...).
Also, keep in mind that drawing a large number of markers will have a negative effect on performance.
antonio
source share