2014-06-06 278 views
2

我使用自定义标记为我的谷歌地图。所有的标记图像都从服务器获得,并借助延迟加载我可以显示。问题是,如果在图像下载完成之前设置制造商,则不会使用新图像更新地图。Android谷歌地图自定义标记

任何帮助,将不胜感激

public class ROverViewRender extends DefaultClusterRenderer<RItem> { 

    private IconGenerator mIconGenerator; 
    private IconGenerator mClusterIconGenerator; 
    private RImageView mImageView; 
    private RImageView mImageVieStar; 
    private ImageView mClusterImageView; 
    private Context context; 
    private ClusterManager<RItem> mClusterManager; 
    private ImageLoader imageLoader; 

    public ROverViewRender(Context context, GoogleMap map, ClusterManager<RItem> clusterManager) { 
     super(context, map, clusterManager); 

     this.mClusterManager=clusterManager; 
     Activity activity = (Activity) context; 
     this.context=context; 
     mClusterIconGenerator=new IconGenerator(context); 
     View clustorIcon = activity.getLayoutInflater().inflate(R.layout.clustor_icon, null); 
     mClusterIconGenerator.setContentView(clustorIcon); 
     mIconGenerator=new IconGenerator(context); 
     View markerIcon = activity.getLayoutInflater().inflate(R.layout.marker_icon, null); 
     mIconGenerator.setContentView(markerIcon); 
     mImageView=(RImageView)markerIcon.findViewById(R.id.marker_image); 
     mImageVieStar=(RImageView)markerIcon.findViewById(R.id.marker_route_rating); 
     mClusterImageView=(NetworkImageView)clustorIcon.findViewById(R.id.cluster_image); 

     imageLoader=VolleySingleton.getInstance(context).getImageLoader();; 

    } 

    @Override 
    protected void onBeforeClusterItemRendered(final RItem item, MarkerOptions markerOptions) { 

     setMarkerImage(item,markerOptions); 
     Bitmap icon = mIconGenerator.makeIcon(); 
     markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)); 


    } 

    @Override 
    protected void onBeforeClusterRendered(Cluster<RItem> cluster, MarkerOptions markerOptions) { 
     Drawable drawable =context.getResources().getDrawable(R.drawable.ic_launcher); 

     mClusterImageView.setImageDrawable(drawable); 
     Bitmap icon = mClusterIconGenerator.makeIcon(String.valueOf(cluster.getSize())); 
     markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)); 
    } 

    @Override 
    protected boolean shouldRenderAsCluster(Cluster cluster) { 
     // Always render clusters. 
     return cluster.getSize() > 1; 
    } 
    @Override 
    protected void onClusterItemRendered(RItem clusterItem, Marker marker) { 
     RLog.e("Invoked the ....>>>>>"); 
    // setMarkerImage(clusterItem); 

    } 

    private void setMarkerImage(RItem item,final MarkerOptions markerOptions){ 
     RLog.e("Image setter invoked..."+item.getMarkerUrl()); 
     mImageView.setImageUrl(item.getMarkerUrl(), imageLoader); 
     imageLoader.get(item.getMarkerUrl(), new ImageListener() { 

       public void onErrorResponse(VolleyError error) { 
       // imageView.setImageResource(R.drawable.icon_error); // set an error image if the download fails 
       } 

       public void onResponse(ImageContainer response, boolean arg1) { 
        RLog.e("Image download completed..."); 
        if (response.getBitmap() != null) { 
         mImageView.setImageBitmap(response.getBitmap()); 


        } 
       } 
      }); 
    } 
} 
+0

想要在图像完成下载时更改标记图标吗? –

+0

也许这有助于:http://stackoverflow.com/questions/13733299/initialize-mapfragment-programmatically-with-maps-api-v2 – runDOSrun

+0

@Rod_Algonquin:是的,但问题是图像正在第二次渲染更新只:( – Bytecode

回答

1

发出定额。谷歌地图标记有setIcon方法,它可以帮助我们更新图标。所以每当我从图片下载器得到回调,我都会通过setIcon方法更新它。到目前为止没有问题,工作完美。