1

我正在使用带有 android-maps-utils 0.3.4 的 Google Map SDK 7.3.0,因为我需要为地图上的标记使用集群。

我的地图

好的,所以这里的问题是,我不应该有一个红色标记。只有绿色+蓝色标记。我进行了子类化DefaultClusterRenderer以创建我的自定义标记视图,但有时它不起作用。

我正在使用 picasso 来获取绿色图标,因为它来自 API。但问题是,当毕加索加载位图时为时已晚,图标已经设置为默认值(红色)。

这是我的 onBeforeClusterItemRenderer :

            Picasso.with(getApplicationContext()).load(item.url).into(new Target() {
            @Override
            public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                FrameLayout icon = (FrameLayout) LayoutInflater.from(getApplicationContext()).inflate(R.layout.marker, null);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    icon.findViewById(R.id.bg).setBackground(new BitmapDrawable(getResources(), bitmap));
                } else {
                    icon.findViewById(R.id.bg).setBackgroundDrawable(new BitmapDrawable(getResources(), bitmap));
                }


                Bitmap b = createDrawableFromView(Home.this, icon);

                if (marker != null) {
                    marker.icon(BitmapDescriptorFactory.fromBitmap(b));
                }
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {

            }

            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {

            }
        });
4

1 回答 1

5

--- 已编辑 ---

下载内部onBeforeClusterItemRendered图像时,实际上每次集群管理器尝试加载标记时都在下载图像,因此,例如,如果您有 100 个标记,您将下载图像 100 次。

你应该下载里面的图片onCreate,保存在静态变量中,mClusterManager.cluster();保存图片后调用,最后在onBeforeClusterItemRenderedwrtie里面marker.icon(BitmapDescriptorFactory.fromBitmap(YourActivity.b));

于 2015-05-02T18:32:16.910 回答