diff options
Diffstat (limited to 'main/src/cgeo/geocaching/CacheDetailActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 3c1a36d..c9193c4 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -45,6 +45,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; @@ -65,7 +66,6 @@ import android.text.format.DateUtils; import android.text.method.LinkMovementMethod; import android.text.style.StrikethroughSpan; import android.text.style.StyleSpan; -import android.util.DisplayMetrics; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; @@ -1800,26 +1800,28 @@ public class CacheDetailActivity extends AbstractActivity { @Override protected BitmapDrawable doInBackground(Void... parameters) { try { - final String latlonMap = cache.getCoords().format(GeopointFormatter.Format.LAT_LON_DECDEGREE_COMMA); - - DisplayMetrics metrics = new DisplayMetrics(); - getWindowManager().getDefaultDisplay().getMetrics(metrics); - - final int width = metrics.widthPixels; - final int height = (int) (110 * metrics.density); - - // TODO move this code to StaticMapProvider and use its constant values - final String markerUrl = "http://cgeo.carnero.cc/_markers/my_location_mdpi.png"; + // persistent preview from storage + Bitmap image = decode(cache); + + if (image == null) { + StaticMapsProvider.storeCachePreviewMap(cache); + image = decode(cache); + if (image == null) { + return null; + } + } - final HtmlImage mapGetter = new HtmlImage(cache.getGeocode(), false, 0, false); - final Parameters params = new Parameters("zoom", "15", "size", width + "x" + height, "maptype", "roadmap", "markers", "icon:" + markerUrl + "|shadow:false|" + latlonMap, "sensor", "false"); - return mapGetter.getDrawable("http://maps.google.com/maps/api/staticmap?" + params); + return ImageHelper.scaleBitmapToFitDisplay(image); } catch (Exception e) { Log.w("CacheDetailActivity.PreviewMapTask", e); return null; } } + private Bitmap decode(final cgCache cache) { + return BitmapFactory.decodeFile(StaticMapsProvider.getMapFile(cache.getGeocode(), "preview", false).getPath()); + } + @Override protected void onPostExecute(BitmapDrawable image) { if (image == null) { |
