Android谷歌地图自定义标记

时间:2014-06-06 09:32:10

标签: android google-maps

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

任何帮助将不胜感激

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());


                    } 
                }
            });
     }
}

1 个答案:

答案 0 :(得分:1)

问题已修复。谷歌地图标记有setIcon方法,可以帮助我们更新图标。所以每当我从图像下载器获得回调时,我将通过setIcon方法更新它。到目前为止没有问题,工作完全正常。