从位图创建地图标记的正确方法是什么?
我正在使用 Google Maps Android v1 并现在转移到 v2。
我的地图包含从位图创建的多个标记。
每个标记由位图图像和上面的一些文本组成,每个标记可能不同。所以我必须修改内存中的每个位图。
我像这样加载标记图像:
private Bitmap getMarker(final String name) {
Bitmap result = BitmapFactory.decodeFile(context.getFilesDir() + "/markers/" + name + ".png");
if (result == null) {
// must make a mutable copy as by default resource is returned immutable
result = decodeResource(context.getResources(), R.drawable.default_marker).copy(Config.ARGB_8888, true);
} else {
result = result.copy(Config.ARGB_8888, true);
}
return result;
}
然后使用画布在其上应用自定义文本:
private void applyText(Bitmap marker, Paint paint, String text) {
Canvas canvas = new Canvas(marker);
canvas.drawText(text, calculateTextX(marker, paint, text), calculateTextY(marker, paint, text), paint);
}
标记图像是 MDPI 设备上约 5KB 大小的多色 PNG 文件。
有时在Google Maps Android v1
某些设备上(难以重现)我java.lang.OutOfMemoryError
在解码位图图像时得到。而且我有一种感觉,我做错了什么......而且我想确定Google Maps Android v2
我不会遇到同样的问题。