diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2013-09-01 09:02:22 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2013-09-01 09:02:22 +0200 |
| commit | b7c8869892c983cdda6bf8bceef686dff3f15630 (patch) | |
| tree | 537d7b8193aaf7b0042aaaa0bce3f8381e71e565 /main/src/cgeo/geocaching/StaticMapsProvider.java | |
| parent | 4f564dd08f8226f7fbcc75b3408fc147a7f97c63 (diff) | |
| download | cgeo-b7c8869892c983cdda6bf8bceef686dff3f15630.zip cgeo-b7c8869892c983cdda6bf8bceef686dff3f15630.tar.gz cgeo-b7c8869892c983cdda6bf8bceef686dff3f15630.tar.bz2 | |
fix #3218: static map in details should be bigger
Diffstat (limited to 'main/src/cgeo/geocaching/StaticMapsProvider.java')
| -rw-r--r-- | main/src/cgeo/geocaching/StaticMapsProvider.java | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/main/src/cgeo/geocaching/StaticMapsProvider.java b/main/src/cgeo/geocaching/StaticMapsProvider.java index eb59bcb..cf279c0 100644 --- a/main/src/cgeo/geocaching/StaticMapsProvider.java +++ b/main/src/cgeo/geocaching/StaticMapsProvider.java @@ -14,13 +14,9 @@ import ch.boye.httpclientandroidlib.HttpResponse; import org.apache.commons.lang3.StringUtils; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Point; -import android.util.DisplayMetrics; -import android.view.Display; -import android.view.WindowManager; import java.io.File; import java.util.concurrent.TimeUnit; @@ -41,6 +37,11 @@ public final class StaticMapsProvider { /** ThreadPool restricting this to 1 Thread. **/ private static final BlockingThreadPool POOL = new BlockingThreadPool(1, Thread.MIN_PRIORITY); + /** + * max size in free API version: https://developers.google.com/maps/documentation/staticmaps/#Imagesizes + */ + private static final int GOOGLE_MAPS_MAX_SIZE = 640; + private StaticMapsProvider() { // utility class } @@ -61,7 +62,7 @@ public final class StaticMapsProvider { final Parameters params = new Parameters( "center", latlonMap, "zoom", String.valueOf(zoom), - "size", String.valueOf(width) + 'x' + String.valueOf(height), + "size", String.valueOf(limitSize(width)) + 'x' + String.valueOf(limitSize(height)), "maptype", mapType, "markers", "icon:" + markerUrl + '|' + shadow + latlonMap, "sensor", "false"); @@ -88,6 +89,10 @@ public final class StaticMapsProvider { } } + private static int limitSize(final int imageSize) { + return Math.min(imageSize, GOOGLE_MAPS_MAX_SIZE); + } + public static void downloadMaps(final Geocache cache) { if ((!Settings.isStoreOfflineMaps() && !Settings.isStoreOfflineWpMaps()) || StringUtils.isBlank(cache.getGeocode())) { return; @@ -172,13 +177,10 @@ public final class StaticMapsProvider { public static void storeCachePreviewMap(final Geocache cache) { final String latlonMap = cache.getCoords().format(Format.LAT_LON_DECDEGREE_COMMA); - final Display display = ((WindowManager) cgeoapplication.getInstance().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); - DisplayMetrics metrics = new DisplayMetrics(); - display.getMetrics(metrics); - final int width = metrics.widthPixels; - final int height = (int) (110 * metrics.density); + final Point displaySize = Compatibility.getDisplaySize(); + final int minSize = Math.min(displaySize.x, displaySize.y); final String markerUrl = MARKERS_URL + "my_location_mdpi.png"; - downloadMap(cache.getGeocode(), 15, ROADMAP, markerUrl, PREFIX_PREVIEW, "shadow:false|", latlonMap, width, height, null); + downloadMap(cache.getGeocode(), 15, ROADMAP, markerUrl, PREFIX_PREVIEW, "shadow:false|", latlonMap, minSize, minSize, null); } private static int guessMaxDisplaySide() { |
