2015-10-29 24 views
2

我使用排球库从服务器获取标记图标URL。从服务器获取图像并使用Volley显示为标记图标

String icon_url = catObj.getString("icon_url"); 

,然后分配icon_url在MyMarker类声明的变量

this.mIconUrl = icon_url; 

现在setUpMap方法我坚持了如何使用图像,我从服务器获取替换标记图标。下面是该代码:

for(MyMarker myMarker : markers) 
{ 
    Marker marker = mMap.addMarker(new MarkerOptions() 
    .position(myMarker.getmLatLng()) 
    .title(myMarker.getmLabel()) 
    .snippet(myMarker.getmIcon()) 
    .icon(???)); //myMarker.getmIconUrl won't work as it return String 
} 

我也从这个链接尝试,但它显示的ImageView图像:

http://www.simplifiedcoding.net/android-volley-example-to-load-image-from-internet/

任何帮助表示赞赏。

回答

0

对于使用Volley获取图像,您必须先创建MarkerOptions的实例,然后然后使用Volley ImageLoader从服务器获取图像,然后在获取位图后将图像设置为标记。你可能有这样的事情:

ImageLoader imageloader =VolleySingleton.getInstance(getApplicationContext()).getImageLoader(); 

for(MyMarker myMarker : markers) 
    { 
    final MarkerOptions markerOptions = new MarkerOptions() 
      .position(myMarker.getmLatLng()); 

    imageloader.get(myMarker.getmIconUrl(), new ImageLoader.ImageListener() { 
     @Override 
     public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) 
     { 
      Bitmap bitmap = response.getBitmap(); 
      if (bitmap != null) { 
       markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap)); 
       //add marker to your map using below codes 
       // mapMarkers is a HashMap of your markers and your possible values for that location(eg. id,name,..) 
       Marker marker = mMap.addMarker(markerOptions); 
       mapMarkers.put(marker, myMarker.getLocationId()); 
      } 
     } 
     @Override 
     public void onErrorResponse(VolleyError error) { 
     } 
    }); 
    }