osmdroidのマーカーでネットから拾ってきたURLに含まれた画像を表示するにはひと工夫必要になります。
urlを使うならpicassoでいけると思ったのですが、あちらが対象にするのはImageViewなので、
markerはMarkerクラスですのでpicassoの引数に含めることができません。
marker.setIcon()の引数もDrawable。しかたがないのでバックグラウンド内でURL→Bitmap→Drawableの
順でせっせこ変換していく方法に落ち着きました。
まず、AsyncTaskをextendsしてコンストラクタをマーカーに決定。
使うオブジェクトはこのマーカーだけ。
バックグラウンド内ではHttpURLConnectionを使ってURLから
Bitmapを作成しています。この処理は、メインスレッドで行うと例外
を喰らうので必ずdoInBackground内で処理をすることがポイント。
メインスレッドに戻ったら今度はDrawableに変換しています。
この処理で戻ってきたDrawableをsetIconすることでURLだった画像を
晴れてマーカーに追加することができました!意外と処理が少なかった・・・?
書いていると長く感じたが気のせいでした。
以下が全コードです。参考にしてみてください。
</pre> public class GetImageAsyncTask extends AsyncTask<String,Void, Bitmap> { private Marker mMarker; public GetImageAsyncTask(Marker marker) { mMarker = marker; } @Override protected Bitmap doInBackground(String... strings) { Bitmap myBitmap = getBitmapFromURL(strings[0]); return myBitmap; } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); Drawable draw = convert(bitmap); mMarker.setIcon(draw); } public static Bitmap getBitmapFromURL(String src) { try { URL url = new URL(src); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); Bitmap myBitmap = BitmapFactory.decodeStream(input); return myBitmap; } catch (IOException e) { // Log exception return null; } } public static BitmapDrawable convert(Bitmap bitmap) { return new BitmapDrawable(bitmap); } } <pre>