在多边形android谷歌地图v2上显示文字

我在地图上使用多边形,我想在它们上面有一个文本.有没有办法做到这一点?
我试图在地图上放置简单的文字,但没有成功.
private void addPolygon(Region reg) {
             PolylineOptions polylineOptions = new PolylineOptions();
             ArrayList<LatLng> coordList=reg.getAllPoints();
             coordList.add(coordList.get(0));
             int regColor = reg.getColor();
             String regName = reg.getName();
             //want to put a name on region
             polylineOptions.addAll(coordList);
             polylineOptions
              .width(5)
              .color(Color.BLACK);
             if (regColor != 0)
                 polylineOptions
                  .color(regColor);
             map.addPolyline(polylineOptions);
            //text on shape?
        }

解决方法

您可以使用自定义图标创建标记,并在该图标上绘制文本.你可以使用这样的方法:
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,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;
}

您需要设置标记的LatLng位置,您必须从您的Region计算它(例如几何的第一个点,最后一个点,一个随机点,质心……).

另外,考虑到绘制大量标记会对性能产生负面影响.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...