1
什麼是從位圖創建地圖標記的正確方法?正確創建和使用從位圖創建的Android地圖標記的方法?
我正在使用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
我不會得到同樣的問題。
目前我有20個不同的標記。而且會有更多的時間。我使用動態標記加載取決於當前可見的地圖投影。所以我不知道在內存中保存標記位圖是否是一件好事,因爲它們中的一些可能會顯示一次,從未再見過...... – 2013-02-24 10:05:41
嗯,我認爲緩存50個標記比加載200次要好考慮Android中奇怪的位圖垃圾收集是如何發生的。 – 2013-02-24 10:07:43
但是如果我在內存中緩存20個「原始」位圖,那麼我仍然需要爲每個標記創建一個位圖的副本,那麼這些緩存的位圖有點多餘?還是將它裝入內存並複製它會更好? – 2013-02-24 10:59:46