ビットマップからマップマーカーを作成する正しい方法は何でしょうか?
私はGoogleMapsAndroid 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
同じ問題を起こさないことを確かに知りたいです。