jes*_*her 30 android android-maps-v2
我正在尝试将我的应用移植到全新的Google Maps API v2,但无法找到如何更改标记的大小(我的某些标记小于默认值).
在v1中,我使用了Drawable我setBounds()在将其添加到地图之前缩放的内容.
但现在,在v2中,我无法使用Drawable.我要使用MarkerOptions().icon(),只需要一个BitmapDescriptor(用a生成BitmapDescriptorFactory).
查看参考资料,似乎没有任何支持设置或更改BitmapDescriptor大小.
那么,我错过了什么,或者在这个API版本中设置自定义标记的大小根本不可能?
小智 50
您可以先将其转换为位图并更改其大小,然后将该位图用作自定义标记.例如,我首先创建了一个方法,该方法接受可绘制文件夹中图像文件的名称,以及要设置的标记的宽度和高度.
public Bitmap resizeMapIcons(String iconName,int width, int height){
Bitmap imageBitmap = BitmapFactory.decodeResource(getResources(),getResources().getIdentifier(iconName, "drawable", getPackageName()));
Bitmap resizedBitmap = Bitmap.createScaledBitmap(imageBitmap, width, height, false);
return resizedBitmap;
}
Run Code Online (Sandbox Code Playgroud)
然后在setUpMap()方法中调用此方法来创建所需大小的新标记.
googleMap.addMarker(new MarkerOptions()
.title("New Marker")
.snippet("Check out this place.")
.position(chelsea).icon(BitmapDescriptorFactory.fromBitmap(resizeMapIcons("image_name",100,100))));
Run Code Online (Sandbox Code Playgroud)
jes*_*her 17
我发现的最佳解决方案是Bitmap在将其添加为之前调整大小Marker.例如,在我的代码中,我使用了一个LevelListDrawable引用多个分辨率Drawable的代码.由于我想要半尺寸标记,我这样做:
LevelListDrawable d=(LevelListDrawable) getResources().getDrawable(R.drawable.estado_variable);
d.setLevel(1234);
BitmapDrawable bd=(BitmapDrawable) d.getCurrent();
Bitmap b=bd.getBitmap();
Bitmap bhalfsize=Bitmap.createScaledBitmap(b, b.getWidth()/2,b.getHeight()/2, false);
mapa.addMarker(new MarkerOptions()
.position(POSITION)
.title("Title")
.icon(BitmapDescriptorFactory.fromBitmap(bhalfsize))
);
Run Code Online (Sandbox Code Playgroud)
这样,我可以继续使用,Drawables同时能够获得不同大小的标记,只需将它们转换Bitmap为根据需要调整大小.
public Bitmap bitmapSizeByScall( Bitmap bitmapIn, float scall_zero_to_one_f) {
Bitmap bitmapOut = Bitmap.createScaledBitmap(bitmapIn,
Math.round(bitmapIn.getWidth() * scall_zero_to_one_f),
Math.round(bitmapIn.getHeight() * scall_zero_to_one_f), false);
return bitmapOut;
}
Run Code Online (Sandbox Code Playgroud)
位图大小恢复为原始大小的 80%。
Bitmap resizeBitmap = bitmapSizeByScall(originBitmap, 0.8f);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59040 次 |
| 最近记录: |