Google 使用 Picasso 绘制群集项目标记图标

Google Maps Cluster Item Marker Icon with Picasso

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

好的,所以这里的问题是,我不应该有红色标记。只有绿色+蓝色标记。 我将 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) {

            }
        });

--- 已编辑 ---

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

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