【问题标题】:Google Marker is not updating image谷歌标记不更新图像
【发布时间】:2016-03-16 00:51:17
【问题描述】:

我不明白为什么我的标记上没有更新图像?

String atvar_url = "uscalumni.gameday-data.com/upload/22081449748313.jpg";

            MarkerOptions options = new MarkerOptions();
            options.title("");
            options.position(latLng);
            options.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(atvar_url, true)));
            options.anchor(0.5f, 1);
            Marker m = googleMap.addMarker(options);
            markerPicMap.put(atvar_url,m);

private Bitmap createDrawableFromView(final String atvar_url, boolean isCallback) {

    DisplayMetrics displayMetrics = new DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

    View marker = ((LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout, null);
    final ImageView img = (ImageView) marker.findViewById(R.id.img_profile);


    Callback callback = null;
    if (isCallback) {
        callback = new Callback() {
            @Override
            public void onSuccess()
            {
                try {
                    if (markerPicMap != null && markerPicMap.containsKey(atvar_url)) {
                        Marker m = markerPicMap.get(atvar_url);
                        if (m != null) {
                            Bitmap bmp = createDrawableFromView(atvar_url, false);
                            Log.e("Sundeep", "Success" +  bmp);
                            m.setIcon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(atvar_url, false)));
                        }
                    }
                }catch (Exception e) {e.printStackTrace();}
            }

            @Override
            public void onError() {
                Log.e("Sundeep", "there is error");
            }
        };
    }
    Picasso.with(getActivity()).load(atvar_url).placeholder(R.drawable.default_user).into(img, callback);
    marker.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    marker.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
    marker.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
    marker.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(marker.getMeasuredWidth(), marker.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    marker.draw(canvas);
    return bitmap;
}

请帮助我。在此先感谢。

【问题讨论】:

  • 你想在地图上自定义图像作为标记???
  • 是的,我想通过使用毕加索来使用自定义图像,我将在该图像的 url 的帮助下加载该图像。

标签: android google-maps google-maps-markers marker


【解决方案1】:

您的代码是正确的,但我注意到加载图像的图像 url 不正确,请在浏览器中打开该图像 url,它说网页不可用,所以 prom 不在您的代码中,我想问题出在图片 url,只需检查或更改以进行测试即可。

【讨论】:

【解决方案2】:

我没有看到任何通过 http 获取图像的代码。您需要添加用于建立 http 连接的代码,然后通过 Internet 使用 InputStream 检索图像。可能你错过了那块。

URL url = new URL(user_image_url);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();   
conn.setDoInput(true);   
conn.connect();     
InputStream is = conn.getInputStream();
bmImg = BitmapFactory.decodeStream(is); 

如需进一步参考,请查看此 SO 答案。

How to create a custom-shaped bitmap marker with Android map API v2

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 2019-06-07
    • 1970-01-01
    • 2013-07-31
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 2012-08-25
    相关资源
    最近更新 更多