使用android将图像加载到地图标记中
Posted
技术标签:
【中文标题】使用android将图像加载到地图标记中【英文标题】:Load Image into map Marker using android 【发布时间】:2016-04-14 02:51:48 【问题描述】:我正在尝试将位图添加到谷歌地图标记图标。
下面是我将图像添加到标记图标的代码。由于位图大小,应用程序崩溃
错误:java.lang.IllegalArgumentException:尺寸为 4096x8192 的纹理大于支持的最大尺寸 4096x4096
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType=options.outMimeType;
if(imageWidth > imageHeight)
options.inSampleSize = calculateInSampleSize(options,10,10);//if landscape
else
options.inSampleSize = calculateInSampleSize(options,10,10);//if portrait
options.inJustDecodeBounds = false;
Bitmap mapbitmap = BitmapFactory.decodeFile("/storage/emulated/0/Pictures/TAG_IMG_25.2571724_55.2994563.jpg", options);
latLng=new LatLng(25.254376, 55.2973058);
marker = googleMap.addMarker(new MarkerOptions()
.position(latLng)
.title(_title)
.snippet("dubai")
.icon(BitmapDescriptorFactory.fromBitmap(mapbitmap)));
public static int calculateInSampleSize(
BitmapFactory.Options options, int reqWidth, int reqHeight)
// Raw height and width of image
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth)
// Calculate ratios of height and width to requested height and width
final int heightRatio = Math.round((float) height / (float) reqHeight);
final int widthRatio = Math.round((float) width / (float) reqWidth);
// Choose the smallest ratio as inSampleSize value, this will guarantee
// a final image with both dimensions larger than or equal to the
// requested height and width.
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
return inSampleSize;
【问题讨论】:
错误出现在哪一行? 关于将位图添加到标记.icon 我认为calculateInSampleSize()
在您的情况下返回 1,您能确认一下吗?初始化options
后直接使用int imageHeight = options.outHeight;
。看起来您缺少将图像尺寸实际读入options
的代码。
【参考方案1】:
答案就在你的问题本身。
Textures with dimensions4096x8192 are larger than the maximum supported size 4096x4096
因此,您必须使用任何图像编辑器(例如 Photoshop)将图像尺寸减小到 4096x4096 以下。
如果你不熟悉,这里是tutorial。
【讨论】:
这不是一个合适的解决方案,例如使用设备相机拍摄的用户提供的图像。 使用 [设置宽度和高度](developer.android.com/reference/android/graphics/…, int, int, android.graphics.Bitmap.Config)) 创建位图(或在本例中重新创建)更适合没有上述异常?以上是关于使用android将图像加载到地图标记中的主要内容,如果未能解决你的问题,请参考以下文章