2014-06-06 272 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方法更新它。到目前爲止沒有問題,工作完美。