2013-08-20 13 views
8

Voglio disegnare il testo nel marker di default di Google map v2. Ho fatto questo prendendo la mia immagine da disegnabile, ma come posso cambiarla nel marcatore di default.come disegnare il testo nel marcatore di default di google map v2

il mio codice è

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

e drawTextToBitmap metodi è.

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

voglio disegnare il testo del genere

enter image description here

+1

hai guardato info windows? Https: //developers.google.com/maps/documentation/android/marker – Raghunandan

+0

@Raghunandan sì, ho guardato. la finestra informativa mostra solo il testo sopra l'indicatore ma voglio mostrare il testo all'interno dell'indicatore. –

+0

controlla questo https://github.com/googlemaps/android-maps-utils o questo O il nuovo sito web: http://googlemaps.github.io/android-maps-utils/ e questo http://www.youtube .com/watch? v = nb2X9IjjZpM – Raghunandan

risposta

7

1.Downlaod biblioteca da

github.com/googlemaps/android-maps-utils

2. Per utilizzare controllare questo collegamento

Using android-maps-utils with ADT

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

quindi impostare il bitmap all'oggetto mappa

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

Snap Shot

enter image description here

+0

come posso mostrare il testo all'interno dell'indicatore? Non voglio fare una bolla come hai fatto tu. –

+0

@NumanAhmad cosa c'è di sbagliato in ciò che hai provato. – Raghunandan

+0

voglio disegnare il testo del genere [voglio disegnare il testo del genere] [1] [1]: http://i.stack.imgur.com/cZ2aJ.jpg –

4

È possibile utilizzare questo esempio per disegnare il testo in pennarello occorre impostare 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; 
} 
Problemi correlati