0

我在显示位图时遇到问题。我有一个从资源加载并放置在地图上的位图(标记),我从服务器下载具有特定尺寸的位图(头像)。然后我将头像放在标记的中心。结果是在一部手机上一切正常,但在另一部手机上,头像比标记大。

我应该怎么办?

4

1 回答 1

0

这样做希望这对你有帮助

googleMap.addMarker(new MarkerOptions().title(markerData.get(USER_NAME))
                            .icon(BitmapDescriptorFactory.fromBitmap(combineImages(BitmapFactory.decodeResource(getResources(), R.drawable.your_pin_marker_from_resorece), bitmapAvatar)))
                            .position(new LatLng(Double.parseDouble(markerData.get(USER_LAT)), Double.parseDouble(markerData.get(USER_LONG)))));

编译图像

public Bitmap combineImages(Bitmap frame, Bitmap image) {
         Bitmap bitmapCreate = null;
            Bitmap bitmapScale = null;
        bitmapScale = Bitmap.createScaledBitmap(image, convertSizeToDeviceDependent(45), convertSizeToDeviceDependent(40), true);

        bitmapCreate = Bitmap.createBitmap(frame.getWidth(), frame.getHeight(), Bitmap.Config.ARGB_8888);

        Canvas comboImage = new Canvas(bitmapCreate);

        comboImage.drawBitmap(bitmapScale, convertSizeToDeviceDependent(7), convertSizeToDeviceDependent(7), null);
        comboImage.drawBitmap(frame, 0, 0, null);
        if (frame != null) {
            try {
                bitmapScale.recycle();
                frame.recycle();
                image.recycle();
                bitmapScale = null;
                frame = null;
                image = null;
            } catch (Throwable e) {
            }
        }
        return bitmapCreate;
    }


public int convertSizeToDeviceDependent(int value) {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        return ((dm.densityDpi * value) / 160);
    }
于 2013-09-27T12:47:51.227 回答