2013-03-21 62 views
0

下面是我添加标记映射无法图标添加到标记,地图V2的Android

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包含路径分隔符

谁能帮助我了解的问题是什么?

谢谢, 勒凯什

回答

0

我认为问题在于方法BitmapDescriptorFactory.fromFile使用参数字符串文件名,这表示文件(图像)的名称来加载。 您提供图片的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}); 
+0

感谢您的回复。你能建议我如何从URL下载图像并使用Asyntask将其存储到位图中。我读了一些我需要使用asyntask的地方。 – 2013-03-21 14:13:48

+0

请参阅编辑asynctask example的答案 – 2013-03-21 14:28:00

+0

非常感谢...我已经完成了... – 2013-03-21 14:37:01