web-dev-qa-db-fra.com

Comment spécifier la taille de l'icône sur le marqueur dans Google Maps V2 Android

En mai, j'utilise Map à partir de Google Maps V2 et j'essaie d'ajouter des marqueurs à chaque marqueur avec une icône, mais le marqueur prend la taille de l'icône qui donne à l'icône une apparence de cheminée. Comment puis-je spécifier la taille du marqueur dans dp afin que je puisse contrôler à quoi il ressemble sur la carte

25
Mohammad Haidar

Actuellement, je pense que nous ne pouvons pas changer la taille du marqueur, vous pouvez donc ajouter une image de marqueur en dessinable et redimensionner quelque chose comme ceci:,

int height = 100;
 int width = 100;
 BitmapDrawable bitmapdraw=(BitmapDrawable)getResources().getDrawable(R.mipmap.marker);
  Bitmap b=bitmapdraw.getBitmap();
Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);

Ur ajouter un marqueur soit comme ça avec icône

                map.addMarker(new MarkerOptions()
                        .position(POSITION)
                        .title("Your title")
                        .icon(BitmapDescriptorFactory.fromBitmap(smallMarker))
                );
87
User Learning

La réponse approuvée est obsolète (getDrawable(), privée du niveau 22 de l'API), je l'ai donc modifiée un peu:

int height = 100;
int width = 100;
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.FOO);
Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
BitmapDescriptor smallMarkerIcon = BitmapDescriptorFactory.fromBitmap(smallMarker);

puis l'appliquer dans MarkerOption

.icon(smallMarkerIcon)
1
O95

Je pense que vous pouvez chercher une réponse sur cette question , où il a déjà expliqué comment créer un marqueur personnalisé, avec une largeur et une hauteur données, en créant un bitmap dynamique .

0
Andrea Montanari

[edit: mise en forme]

Drawable circleDrawable = getResources().getDrawable(R.mipmap.primarysplitter);
            bitmapDescriptor=getMarkerIconFromDrawable(circleDrawable);


private BitmapDescriptor getMarkerIconFromDrawable(Drawable drawable) {
    Canvas canvas = new Canvas();
    Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    canvas.setBitmap(bitmap);
    drawable.setBounds(0, 0, (int)getResources().getDimension(R.dimen._30sdp), (int)getResources().getDimension(R.dimen._30sdp));
    drawable.draw(canvas);
    return BitmapDescriptorFactory.fromBitmap(bitmap);
}
0
Rohit Bansal