2013-08-20 12 views
8

Chcę narysować tekst w domyślnym znaczniku mapy Google v2. Zrobiłem to, robiąc własny obraz z rysowania, ale jak mogę go zmienić w domyślnym znaczniku.jak narysować tekst w domyślnym znaczniku mapy google v2

mój kod jest

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

i drawTextToBitmap metod.

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

chcę wyciągnąć tekst jak ten

enter image description here

+1

Czy obejrzałeś okna informacyjne? Https: //developers.google.com/maps/documentation/android/marker – Raghunandan

+0

@Raghunandan tak, wyglądam. okno informacyjne wyświetla tylko tekst nad znacznikiem, ale chcę wyświetlić tekst wewnątrz znacznika. –

+0

sprawdź to https://github.com/googlemaps/android-maps-utils lub tę stronę internetową: http://googlemaps.github.io/android-maps-utils/ i http://www.youtube .com/obejrzyj? v = nb2X9IjjZpM – Raghunandan

Odpowiedz

7

1.Downlaod biblioteki z

github.com/googlemaps/android-maps-utils

2. Aby użyć, sprawdź ten link:

Using android-maps-utils with ADT

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

Następnie ustaw bitmapę do obiektu mapy

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

snap shot

enter image description here

+0

Jak mogę wyświetlać tekst wewnątrz markera? Nie chcę tworzyć bańki tak jak Ty. –

+0

@NumanAhmad, co jest nie tak z tym, co próbujesz. – Raghunandan

+0

chcę wyciągnąć tekst jak ten [chcę wyciągnąć tekst takiego] [1] [1]: http://i.stack.imgur.com/cZ2aJ.jpg –

4

Można wykorzystać ten przykład narysować tekst w markera trzeba ustawić 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; 
} 
Powiązane problemy