【发布时间】:2014-12-26 12:42:17
【问题描述】:
我正在从 URL 加载图像,将其转换为位图,然后将其添加到地图中的标记中。我有两个标记,一个用于我的个人资料,另一个用于朋友个人资料。
当我加载图像时,我收到以下错误并且图像没有被加载。也没有强制关闭。
android.os.NetworkOnMainThreadException
我不确定这是什么错误。
这是我正在尝试的代码:以下相同的代码适用于我的个人资料图片。只有当我尝试加载我的朋友列表时才会出现这种情况。
我在里面调用下面的 for 循环。
for (int i = 0; i < friendsList.size(); i++)
{
userName = friendsList.get(i).getName();
lati = friendsList.get(i).getLati();
longi = friendsList.get(i).getLongi();
photoUrl = friendsList.get(i).getImage();
loadMyFriendsLocation(Double.parseDouble(lati), Double.parseDouble(longi), userName, photoUrl, 15);
}
而loadmyfriendsloaction方法有以下内容:
View marker = getActivity().getLayoutInflater().inflate(R.layout.activity_myfriendslocationmap, null);
ImageView friendImageView = (ImageView) marker.findViewById(R.id.badge);
try
{
InputStream in = new java.net.URL(urlfriends).openStream();
Bitmap mIcon11 = BitmapFactory.decodeStream(in);
friendImageView.setImageBitmap(mIcon11);
}
catch (Exception e)
{
Log.e("Error", "Message"+e);
e.printStackTrace();
}
//TO CONVERT A VIEW INTO BITMAP
marker.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
marker.layout(0, 0, marker.getMeasuredWidth(),marker.getMeasuredHeight());
final Bitmap icon = Bitmap.createBitmap(marker.getMeasuredWidth(), marker.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(icon);
marker.draw(canvas);
MarkerOptions markerOptionsforfriends = new MarkerOptions().position(position).icon(BitmapDescriptorFactory.fromBitmap(icon)).title(uname).anchor(0.5f, 1f);
markerforfriends = googleMap.addMarker(markerOptionsforfriends);
我在这里完全空白我不知道这可能会出错,因为我的个人资料图片出现了相同的代码,但朋友的照片没有出现......
有人可以帮我解决这个问题吗?
谢谢!
【问题讨论】:
-
在线程中下载图片或使用AsyncTask...
-
在我的情况下,我不能使用 AsyncTask 我将在哪里将视图转换为位图?
-
你可以使用AsyncTask
-
@CapDroid: 在哪个部分将视图转换为位图?
-
@TheDevMan convert view to bitmap 不会导致这个错误,这个错误是因为你在主线程上调用网络操作,所以在线程中进行网络操作。
标签: android google-maps google-maps-markers google-maps-api-2