简体   繁体   English

Android Google Map自定义标记

[英]Android google map custom marker

Am using custom markers for my google map. 我正在为我的Google地图使用自定义标记。 All the marker images are getting from server and with help of lazy loading i can display . 所有标记图像都是从服务器获取的,借助延迟加载,我可以显示这些图像。 The issue is that if the maker is set before image downloading completed it never update the map with new image. 问题是,如果在图像下载完成之前设置了制造商,则永远不会使用新图像更新地图。

Any help would be appreciated 任何帮助,将不胜感激

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


                    } 
                }
            });
     }
}

Issue Fixed. 问题已修复。 The google map marker have setIcon method which help us to update the icon. 谷歌地图标记具有setIcon方法,可帮助我们更新图标。 so whenever i got the callback from image downloader i will update it through setIcon method . 因此,每当我从图像下载器收到回调时,我都会通过setIcon方法对其进行更新。 So far no issues ,working perfectly fine. 到目前为止,没有问题,工作正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM