Возможно, я немного опоздал, но я опубликую решение для тех, кто сталкивался / сталкивается с подобной проблемой. Таким образом, в основном то, что вы должны сделать (по крайней мере, для решения, которое вы ищете, то есть пользовательское изображение, наложенное на фон в виде рамки), - это наложить customImage на фоновое поле с помощью холста. Используя эту реализацию, вы можете эффективно создать BitmapDrawable из холста, который затем можно назначить в качестве маркера для вашего «Overlay» / «ItemizedOverlay». Также, пожалуйста, воздержитесь от создания ImageView для каждого наложения, так как это полностью разрушит вашу память / ваше приложение, если вам придется иметь дело с тысячами таких ImageViews одновременно. Вместо этого используйте BitmapDrawables, которые можно назначать наложениям во время их создания и не использовать почти столько же памяти, сколько ImageView.
public BitmapDrawable imageOnDrawable(int drawableBackground, Bitmap customImage)
{
//The following line is optional but I'd advise you to minimize the size of
//the size of the bitmap (using a thumbnail) in order to improve draw
//performance of the overlays (especially if you are creating a lot of overlays).
Bitmap customImageThumbnail = ThumbnailUtils.extractThumbnail(
customImage, 100, 100);
Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId);
bm = Bitmap.createScaledBitmap(bm, 112, 120, false);
Canvas canvas = new Canvas(bm);
canvas.drawBitmap(bm, 0, 0, null);
// The 6,6 in the below line refer to the offset of the customImage/Thumbnail
// from the top-left corner of the background box (or whatever you want to use
// as your background)
canvas.drawBitmap(customImageThumbnail, 6, 6, null);
return new BitmapDrawable(bm);
}