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 | |
| 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')
| -rw-r--r-- | main/res/layout/cachedetail_details_page.xml | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 3 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/StaticMapsProvider.java | 24 |
3 files changed, 16 insertions, 13 deletions
diff --git a/main/res/layout/cachedetail_details_page.xml b/main/res/layout/cachedetail_details_page.xml index 484385e..e735699 100644 --- a/main/res/layout/cachedetail_details_page.xml +++ b/main/res/layout/cachedetail_details_page.xml @@ -261,7 +261,7 @@ <ImageView
android:id="@+id/map_preview"
android:layout_width="fill_parent"
- android:layout_height="80dip"
+ android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:onClick="showNavigationMenu"
diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index 1fc20ec..4b34f8d 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -1614,7 +1614,8 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc return; } - ((ImageView) view.findViewById(R.id.map_preview)).setImageDrawable(image); + final ImageView imageView = (ImageView) view.findViewById(R.id.map_preview); + imageView.setImageDrawable(image); view.findViewById(R.id.map_preview_box).setVisibility(View.VISIBLE); } catch (final Exception e) { Log.e("CacheDetailActivity.PreviewMapTask", e); 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() { |
