Ответ 1
Вы можете загрузить Bitmap как
Bitmap bmp = BitmapFactory.decodeStream(myurl.openConnection().getInputStream());
Используется поток для получения растрового изображения
Тогда
.icon(BitmapDescriptorFactory.fromBitmap(bmp)));
Из ваших комментариев вы получите NetworkOnMainThreadException
Итак, используйте поток.
Thread thread = new Thread(new Runnable(){
@Override
public void run(){
URL url ;
try {
url = new URL("myurl");
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
source = mMap.addMarker(new MarkerOptions()
.position(sc)
.title("MyHome")
.snippet("Bangalore")
.icon(BitmapDescriptorFactory.fromResource(bmp)));
}
});
}
});
thread.start();
Вы не можете обновить ui из фонового потока. используйте runOnUiThread
.
Использование asycntask
Сделайте свой asycn taks внутренним классом вашей деятельности. Объявить Bitmap как переменную класса.
class TheTask extends AsyncTask <Void,Void,Void>
{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
URL url ;
try {
url = new URL("myurl");
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
source = mMap.addMarker(new MarkerOptions()
.position(sc)
.title("MyHome")
.snippet("Bangalore")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));
}
}