【发布时间】:2014-01-28 23:41:33
【问题描述】:
从位图创建地图标记的正确方法是什么?
我正在使用 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 我不会遇到同样的问题。
【问题讨论】:
标签: android android-maps android-maps-v2