Android版Google地图v2中令人耳目一新的制作者(ClusterItems) [英] Refreshing makers (ClusterItems) in Google Maps v2 for Android
问题描述
我使用 Google地图Android API公用程序库,从互联网上下载我想用作标记的某些图像。
我这样做的方式就像下面的代码片段所示:
pre $ class MarkerItemClusterRenderer extends DefaultClusterRenderer< MarkerItem> {
...
@Override
protected void onBeforeClusterItemRendered(MarkerItem item,
MarkerOptions markerOptions){
super.onBeforeClusterItemRendered(item,markerOptions);
mImageLoader.get(item.getImageUrl(),new ImageListener(){
$ b @Override
public void onErrorResponse(VolleyError error){
Log.i( XXX,error.toString());
}
$ b $ @覆盖$ b $ public void onResponse(ImageContainer response,boolean isImmediate){
if(response!= null &&& response.getBitmap()!= null){
mImageIcon.setImageBitmap(response.getBitmap());
位图图标= mIconGenerator.makeIcon();
位图bhalfsize =位图.batmap(bhalfsize));
}
}
。 });
}
问题是,当下载图像时,地图标记)不会刷新,所以大部分时间(但并非总是)我仍然看到红色的默认标记。
我试着做 mImageIcon.invalidate(); mImageIcon.requestLayout();
但仍然没有运气。
有没有办法达到这个目的?
提前感谢您。
您只需要在$ b中完成所有这些工作
$ b
protected void onClusterItemRendered(T clusterItem,Marker marker){
...
}
$ c $在 onBeforeClusterItemRendered
中设置图标 MarkerOptions $ c>
> $ c>在异步回调。此时它可以添加到地图并成为真正的标记
。所以你的图标会被设置为已经没用的对象。
这就是为什么你需要在 onClusterItemRendered
I'm using Google Maps Android API Utility Library and I'm downloading certain images from internet that I want to use as markers. The way I'm doing it is like in the following snippet:
class MarkerItemClusterRenderer extends DefaultClusterRenderer<MarkerItem> {
...
@Override
protected void onBeforeClusterItemRendered(MarkerItem item,
final MarkerOptions markerOptions) {
super.onBeforeClusterItemRendered(item, markerOptions);
mImageLoader.get(item.getImageUrl(), new ImageListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("XXX", error.toString());
}
@Override
public void onResponse(ImageContainer response, boolean isImmediate) {
if (response != null && response.getBitmap() != null) {
mImageIcon.setImageBitmap(response.getBitmap());
Bitmap icon = mIconGenerator.makeIcon();
Bitmap bhalfsize = Bitmap.createScaledBitmap(icon, 150,
150, false);
markerOptions.icon(BitmapDescriptorFactory
.fromBitmap(bhalfsize));
}
}
});
}
The problem is, that when the image is downloaded, the map (and thus the marker) doesn't refresh, so most of the times (but not always) I still see the red default markers.
I tried to do mImageIcon.invalidate(); mImageIcon.requestLayout();
but there's still no luck.
Is there anyway to achieve this? Thanks a lot in advance.
You just need to make all this stuff in
protected void onClusterItemRendered(T clusterItem, Marker marker) {
...
}
In onBeforeClusterItemRendered
you set icon on MarkerOptions
in async callback. At this time it could be added to map and become real Marker
. So you icon will be set to already useless object.
That's why you need to do it in onClusterItemRendered
这篇关于Android版Google地图v2中令人耳目一新的制作者(ClusterItems)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!