Android 谷歌地图自定义标记

标签 android google-maps

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

任何帮助将不胜感激

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


                    } 
                }
            });
     }
}

最佳答案

问题已解决。谷歌地图标记有 setIcon 方法可以帮助我们更新图标。所以每当我从图像下载器收到回调时,我都会通过 setIcon 方法更新它。到目前为止没有问题,工作正常。

关于Android 谷歌地图自定义标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24078553/

相关文章:

java - 降级 Google Play 服务后调整依赖项

java - 从 Firebase 下载文件 |应用程序可以在 Debug模式下运行,但不能在 Release模式下运行

google-maps - 如何获得与 Google Map Geocoder V3 相当的精度

ios - 在 Swift 4 中在 Google map 上显示路径

java - Android 版 Google map API,更快/更有效地检索基于位置的信息?

android - 查看页面 : set a different padding for first and last page

java - Android 中是否有创建、更新数据并将数据传递到 fragment 或 Activity 的约定?

java - 在 Android 中格式化字符串变量

ios - 意外发现 Nil 展开一个 Optional 值

javascript - angular-google-maps 中的标记与标记指令