Как добавить Placemark с текстом в Yandex MapKit на Android?
Нужно нечто подобное, как это реализуется в JavaScript API для сайтов:
При добавлении метки таким образом:
mapview.map.mapObjects.addPlacemark(Point(52.207970, 104.063277))
Создается обычная точка:
В документации не нашел ни слова об этом. В примерах видел лишь подсовывание текста в TextView через ViewProvider, но не более.
Существует ли какой-либо штатный вариант создать нормальную метку с текстом через API? Если нет, то к какой альтернативе можно прибегнуть, чтобы создать что-то подобное?
Ответы (1 шт):
Автор решения: Crazy
→ Ссылка
Вы можете нарисовать свой bitmap с помощью canvas, поместив на него нужный текст:
public Bitmap drawSimpleBitmap(String number) {
int picSize = {нужный вам размер изображения};
Bitmap bitmap = Bitmap.createBitmap(picSize, picSize, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// отрисовка плейсмарка
Paint paint = new Paint();
paint.setColor(Color.Green);
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(picSize / 2, picSize / 2, picSize / 2, paint);
// отрисовка текста
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setTextSize({Нужный размер текста});
paint.setTextAlign(Paint.Align.CENTER);
canvas.drawText(number, picSize / 2,
picSize / 2 - ((paint.descent() + paint.ascent()) / 2), paint);
return bitmap;
}
Или использовать готовый битмап, например, из ресурсов (отресайзить если надо) и рисовать поверх него:
Bitmap source = BitmapFactory.decodeResource(context.getResources(), R.drawable.your_icon_name);
// создаем mutable копию, чтобы можно было рисовать поверх
Bitmap bitmap = source.copy(Bitmap.Config.ARGB_8888, true);
// инициализируем канвас
Canvas canvas = new Canvas(bitmap);
// рисуем текст на канвасе аналогично примеру выше
А затем отрисовать с помощью
addPlacemark(getPoint(),
ImageProvider.fromBitmap(drawSimpleBitmap(number))

