如何根据 google 地图在 android 中的不同缩放级别调整 google 地图标记的大小
How to resize the google map markers based on the google map different zoom level in android
我在google地图android中使用了5个标记,并且每5秒标记位置也随动画变化。在这种情况下,我想根据缩放级别动态调整图标大小。
您可以通过创建具有自定义高度的位图来做到这一点
int height = 100;// resize according to your zooming level
int width = 100;// resize according to your zooming level
BitmapDrawable bitmapdraw = (BitmapDrawable)getResources().getDrawable(R.mipmap.marker);
Bitmap b=bitmapdraw.getBitmap();
Bitmap finalMarker= Bitmap.createScaledBitmap(b, width, height, false);
并在地图上添加此位图。
map.addMarker(new MarkerOptions()
.position(POSITION)
.title("Your title")
.icon(BitmapDescriptorFactory.fromBitmap(finalMarker))
);
希望这有效!
试试下面的代码片段,它是为我使用的。此方法将 return 适合您的缩放级别以及您预期的高度和宽度的图像。
public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
return Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
}
我在google地图android中使用了5个标记,并且每5秒标记位置也随动画变化。在这种情况下,我想根据缩放级别动态调整图标大小。
您可以通过创建具有自定义高度的位图来做到这一点
int height = 100;// resize according to your zooming level
int width = 100;// resize according to your zooming level
BitmapDrawable bitmapdraw = (BitmapDrawable)getResources().getDrawable(R.mipmap.marker);
Bitmap b=bitmapdraw.getBitmap();
Bitmap finalMarker= Bitmap.createScaledBitmap(b, width, height, false);
并在地图上添加此位图。
map.addMarker(new MarkerOptions()
.position(POSITION)
.title("Your title")
.icon(BitmapDescriptorFactory.fromBitmap(finalMarker))
);
希望这有效!
试试下面的代码片段,它是为我使用的。此方法将 return 适合您的缩放级别以及您预期的高度和宽度的图像。
public static Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
return Bitmap.createBitmap(bm, 0, 0, width, height, matrix, false);
}