来自url的Android google mapv2图标

现在遇到的问题是我无法从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()); } } 

你可以下载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成为你活动的内在阶级。 将Bitmap声明为类variables。

  class TheTask extends AsyncTask  { @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(); } 

希望这个帮助