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
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))
);
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)
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 .
[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);
}