【问题标题】:Unable to add icon to Marker , Map V2 Android无法将图标添加到标记,地图 V2 Android
【发布时间】:2013-03-21 13:32:25
【问题描述】:

这是我向地图添加标记的方式

map.addMarker(new MarkerOptions()
                    .position(model.getLatLongfromService())
                    .title(model.getCoupon_name())
                    .snippet(model.getCoupon_id())
                    .icon(BitmapDescriptorFactory.fromFile(DataHolder.imageUrl
                            + model.getCoupon_image())));

java.lang.IllegalArgumentException:文件http://test.xyz.de/uploads/company_logo/sample-logo-110x60.jpg 包含路径分隔符

谁能帮我理解问题出在哪里?

谢谢, 拉克什

【问题讨论】:

    标签: android google-maps-android-api-2


    【解决方案1】:

    我认为问题在于方法 BitmapDescriptorFactory.fromFile 使用参数 String fileName,它表示要加载的文件(图像)的名称。 您提供图片的 http url (http://test.xyz.de/uploads/company_logo/sample-logo-110x60.jpg) 而不是它。

    你可能需要先下载图片,然后使用BitmapDescriptorFactory.fromBitmap;

    编辑: 要下载图像,您可以使用一些 AsyncTask,例如:

        AsyncTask<String, Void, Bitmap> loadImageTask = new AsyncTask<String, Void, Bitmap>(){
            @Override
            protected Bitmap doInBackground(String... params) {
                Bitmap bmImg = null;
                try { 
                    URL url = new URL(params[0]);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();   
                    conn.setDoInput(true);   
                    conn.connect();     
                    InputStream is = conn.getInputStream();
                    bmImg = BitmapFactory.decodeStream(is); 
                }
                catch (IOException e)
                {       
                    e.printStackTrace(); 
                    bmImg = null;
                }
    
                return bmImg; 
            }
    
            @Override
            protected void onPostExecute(Bitmap result) {
                super.onPostExecute(result);
                // TODO: do what you need with resulting bitmap - add marker to map
            }
        };
    

    然后不要忘记使用适当的参数执行 asynctask - 包含要下载的图像 url 的字符串数组:

    loadImageTask.execute(new String[]{yourImageUrl});
    

    【讨论】:

    • 感谢您的回复。您能否建议我如何从 URL 下载图像并使用 Asyntask 将其存储到位图中。我读了一些我需要使用 asyntask 的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多