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));
我正在使用 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));