我在地图上使用多边形,我想在它们上面有一个文本.有没有办法做到这一点?
我试图在地图上放置简单的文字,但没有成功.
我试图在地图上放置简单的文字,但没有成功.
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计算它(例如几何的第一个点,最后一个点,一个随机点,质心……).