В приложении я можно использовать Карту с Google Maps V2, и на этой карте я пытаюсь добавить маркеры на каждый маркер с помощью значка, но маркер принимает размер значка, который заставляет значок выглядеть дымоходом. Как я могу определить размер маркера в dp, чтобы я мог контролировать, как он выглядит на карте
Как указать размер значка на маркерах в Google Maps V2 Android
Ответ 1
В настоящее время я думаю, что мы не можем изменить размер маркера, поэтому вы можете добавить маркерное изображение в drawable и изменить размер примерно так:
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);
Ур добавить маркер таким образом, чтобы значок
map.addMarker(new MarkerOptions()
.position(POSITION)
.title("Your title")
.icon(BitmapDescriptorFactory.fromBitmap(smallMarker))
);
Ответ 2
Я думаю, вы можете найти ответ на этот вопрос, где он уже объяснил, как создать пользовательский маркер с заданной шириной и высотой, создав динамический растровый.
Ответ 3
[edit: форматирование]
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);
}
Ответ 4
Утвержденный ответ устарел (getDrawable()
, исключен с уровня API 22), поэтому я немного его изменил:
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);
а затем применить его в MarkerOption
.icon(smallMarkerIcon)
Ответ 5
Вы можете использовать bitmap drawable, который автоматически разрешает на основе размера экрана.