以下是我如何在地图中添加标记
map.addMarker(new MarkerOptions()
.position(model.getLatLongfromService())
.title(model.getCoupon_name())
.snippet(model.getCoupon_id())
.icon(BitmapDescriptorFactory.fromFile(DataHolder.imageUrl
+ model.getCoupon_image())));
我以这种格式获得coupon_image:http://www.xyz.com/coupon21.jpg **
运行我的应用时出现此错误。
java.lang.IllegalArgumentException:文件http://test.xyz.de/uploads/company_logo/sample-logo-110x60.jpg包含路径分隔符
任何人都可以帮我理解问题所在吗?
谢谢, 勒凯什
答案 0 :(得分:0)
我认为问题是方法BitmapDescriptorFactory.fromFile使用参数String fileName,它表示要加载的文件(图像)的名称。 您提供图片的http网址(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的String数组:
loadImageTask.execute(new String[]{yourImageUrl});