代码之家  ›  专栏  ›  技术社区  ›  Rakesh Gondaliya

无法将图标添加到Marker,Map V2 Android

  •  0
  • Rakesh Gondaliya  · 技术社区  · 12 年前

    以下是我如何在地图上添加标记

    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.IollegalArgumentException:文件 http://test.xyz.de/uploads/company_logo/sample-logo-110x60.jpg 包含路径分隔符

    有人能帮我理解问题出在哪里吗?

    谢谢 拉凯什

    1 回复  |  直到 12 年前
        1
  •  0
  •   BerÅ¥ák    12 年前

    我认为问题在于方法BitmapDescriptorFactory.fromFile使用了参数StringfileName,它表示要加载的文件(图像)的名称。 您提供图像的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});