【问题标题】:Android google map custom markerAndroid 谷歌地图自定义标记
【发布时间】:2014-06-06 09:32:09
【问题描述】:

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

任何帮助将不胜感激

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


                    } 
                }
            });
     }
}

【问题讨论】:

  • 图片下载完成后要更改marker的图标吗?
  • @Rod_Algonquin:是的,但问题是图像仅在第二次渲染期间更新:(
  • 什么是RImageView?

标签: android google-maps


【解决方案1】:

问题已解决。谷歌地图标记具有帮助我们更新图标的 setIcon 方法。因此,每当我从图像下载器获得回调时,我都会通过 setIcon 方法对其进行更新。到目前为止没有任何问题,工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-13
    • 2020-10-02
    • 2016-01-16
    • 2013-08-21
    • 1970-01-01
    • 2015-10-19
    相关资源
    最近更新 更多