2014-06-06 6 views
2

내 Google지도에 맞춤 마커를 사용하고 있습니다. 모든 마커 이미지는 서버에서 가져오고 게으른로드로 인해 표시 할 수 있습니다. 문제는 이미지 다운로드가 완료되기 전에 제조업체가 설정되면지도를 새 이미지로 업데이트하지 않는다는 것입니다.Android google지도 맞춤 마커

어떤 도움을

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

문제가 해결 감상 할 수있다. Google지도 아이콘에는 icon을 업데이트하는 데 도움이되는 setIcon 메서드가 있습니다. 그래서 언제든지 내가 이미지 다운 로더에서 콜백을 가지고 setIcon 메소드를 통해 그것을 업데이트 할 것이다. 지금까지 전혀 문제없이 완벽하게 작동합니다.