Android google mapv2 значок из URL

Теперь появилась проблема, из-за которой я не могу загрузить и отобразить пользовательский значок в Google Картах с URL-адреса. Что касается примера Google, отображается только значок, отображаемый на карте Google. Но я хочу знать, показывать значок из URL.

private Marker melbourne = mMap.addMarker(new MarkerOptions() .position(MELBOURNE) .title("Melbourne") .snippet("Population: 4,137,400") .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow))); 

И вот мое кодирование.

  if(c != null){ if(c.moveToFirst()){ do { googleMap.addMarker(new MarkerOptions() .position(new LatLng(Double.parseDouble(c.getString(2)), Double.parseDouble(c.getString(3)))) .title(c.getString(0)) .icon(BitmapDescriptorFactory.fromBitmap(bmp)) .snippet(c.getString(1))); } while(c.moveToNext()); } } 

Solutions Collecting From Web of "Android google mapv2 значок из URL"

Вы можете скачать 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))); } } 

Я использовал Ion для загрузки изображения. Это очень хорошая библиотека.

Установить значок маркера с URL-адреса очень просто.

 try { Bitmap bmImg = Ion.with(context) .load("http://example.com").asBitmap().get(); mMap.addMarker(new MarkerOptions().position(latlng) .icon(BitmapDescriptorFactory.fromBitmap(bmImg))); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } 

Надеюсь эта помощь