使用Glide将图像加载到Google Maps Marker

pli*_*osv 8 android google-maps google-maps-markers android-glide

我有一个问题。我使用Glide 3.8.0。

我需要从服务器下载图像并将其放入Google地图上的标记中。

    Glide.with(getBaseActivity())
                .load(place.getIconUrl())
                .asBitmap()
                .fitCenter()
                .into(new SimpleTarget<Bitmap>(50,50) {
                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        map.addMarker(new MarkerOptions()
                                .icon(BitmapDescriptorFactory.fromBitmap(resource))
                                .position(place.getLatLng()));
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        map.addMarker(new MarkerOptions()
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker_default_logo))
                        .position(place.getLatLng()));
                    }
                });
Run Code Online (Sandbox Code Playgroud)

另外,如果有一些加载错误,我有默认徽标,其大小为50x50。

我测试了2种设备上的加载-nexus 5和无名称设备(我不知道屏幕分辨率和屏幕尺寸,但尺寸与nexus 5几乎相同)

在不同的设备上,我有不同大小的标记徽标,并且我尝试

.into(new SimpleTarget<Bitmap>(50,50) 尺寸

Nexus 5,50x50与默认徽标相比要小得多,75x75比默认徽标要小,150x150与默认徽标相同

无名称设备:75x75与默认徽标相同,比默认徽标小50x50

因此,我可以使用Glide做什么使其在不同的设备上相同并且与默认徽标50x50相同(默认徽标在不同设备上看起来相同)

Nexus 5 50x50

Nexus 5 75x75

Nexus 5 150x150

pli*_*osv 2

决定重新创建位图

Glide.with(getBaseActivity())
                .load(place.getIconUrl())
                .asBitmap()
                .dontTransform()
                .into(new SimpleTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                        final float scale = getContext().getResources().getDisplayMetrics().density;
                        int pixels = (int) (50 * scale + 0.5f);
                        Bitmap bitmap = Bitmap.createScaledBitmap(resource, pixels, pixels, true);
                        markerImageView.setImageBitmap(bitmap);
                        addMarker(place.getLatLng());
                    }

                    @Override
                    public void onLoadFailed(Exception e, Drawable errorDrawable) {
                        markerImageView.setImageResource(R.drawable.ic_marker_default_logo);
                        addMarker(place.getLatLng());
                    }
                });
Run Code Online (Sandbox Code Playgroud)