Как просмотреть изображение на маркере карт Google с URL? - PullRequest
0 голосов
/ 19 октября 2019

Здесь я использую этот подход для просмотра изображения на маркере Google Map, я сталкиваюсь с «Image Buffer is not array Error».

Здесь это код моего маркера

 mGoogleMap.addMarker(new MarkerOptions()
                .position(new LatLng(latitude, longitude))
                .anchor(0.5f, 0.5f)
                .title(title)
                .snippet(snippet)
                .icon(BitmapDescriptorFactory.fromBitmap(getBitmapFromURL("https://c.ndtvimg.com/2019-10/5cnigl7_virat-kohli-afp_625x300_15_October_19.jpg"))));

и вот как я загружаю изображение из URL в растровое изображение. Используя Glide

private Bitmap bitmap;

 private Bitmap getBitmapFromURL(String url){

        Glide.with(this)
                .asBitmap()
                .load(url)
                .into(new CustomTarget<Bitmap>(25,25) {
                    @Override
                    public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                        bitmap =resource;
                    }

                    @Override
                    public void onLoadCleared(@Nullable Drawable placeholder) {
                    }
                });
        return bitmap;
    }

это ошибка, полученная при отладке

Unexpected Error: Image buffer is not an array.

Если есть какой-либо другой лучший подход, пожалуйста, дайте мне знать.

1 Ответ

2 голосов
/ 19 октября 2019

Может быть, битовая карта, которую вы выбираете с помощью Glide, завершает загрузку после того, как вы вернули битовую карту. Скользите, загружая изображение асинхронно, но вы немедленно возвращаете растровое изображение.

Пожалуйста, попробуйте с кодом ниже.

private void getMarkerFromURL(String url){
            Glide.with(this)
                    .asBitmap()
                    .load(url)
                    .into(new CustomTarget<Bitmap>(25,25) {
                        @Override
                        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                            mGoogleMap.addMarker(new MarkerOptions()
                            .position(new LatLng(latitude, longitude))
                            .anchor(0.5f, 0.5f)
                            .title(title)
                            .snippet(snippet)
                            .icon(BitmapDescriptorFactory.fromBitmap(resource)));
                        }

                        @Override
                        public void onLoadCleared(@Nullable Drawable placeholder) {
                        }
                    });
        }
...