2017-06-14 1 views
0

Je construis une application Google Maps. J'ai différents objets avec des coordonnées mais chaque objet a une valeur int unique que je voudrais voir à côté d'un marqueur. Par exemple pour un objet avec des coordonnées spécifiques et la valeur 123, je voudrais mettre sur la carte (à ces coords) le marqueur et à côté de lui la valeur 123.
J'ai fait quelques recherches et la seule façon trouvé plausible est d'utiliser une API Android pour créer votre propre image bitmap à partir d'une image de base et une chaîne qui est "attachée" et l'utiliser pour l'icône du marqueur.
Y a-t-il une meilleure façon de faire cela?
Sur le même sujet, vous montrez le titre de chaque marqueur sur votre carte en même temps?Existe-t-il un moyen de personnaliser chaque marqueur Google Maps dans Android Studio?

Répondre

1

https://stackoverflow.com/a/14812104

S'il vous plaît voir le lien. Le snipet est utilisé pour ajouter du texte sur le fabricant qui peut également être personnalisé.

+1

Oui @kisslory vous pouvez entièrement personnaliser chaque marqueur en fonction de vos besoins. –

1

Oui @kisslory vous pouvez entièrement personnaliser chaque marqueur en fonction de vos besoins.

Lors de la définition du bitmap pour chaque marqueur, vous pouvez créer un nouveau bitmap à partir d'une ressource donnée en utilisant la méthode ci-dessous.

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(); 
    // set default bitmap config if none 
    if(bitmapConfig == null) { 
     bitmapConfig = android.graphics.Bitmap.Config.ARGB_8888; 
    } 
    // resource bitmaps are imutable, 
    // so we need to convert it to mutable one 
    bitmap = bitmap.copy(bitmapConfig, true); 

    Canvas canvas = new Canvas(bitmap); 
    // new antialised Paint 
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); 
    // text color - #3D3D3D 
    paint.setColor(Color.rgb(61, 61, 61)); 
    // text size in pixels 
    paint.setTextSize((int) (14 * scale)); 
    // text shadow 
    paint.setShadowLayer(1f, 0f, 1f, Color.WHITE); 

    // draw text to the Canvas center 
    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, y, paint); 

    return bitmap; 
}