2017-04-04 94 views
2

我使用百度地圖來顯示從服務器獲取的商店,包含圖片網址。我使用Glide爲地圖設置圖標。如何將參數傳遞給Glide回調方法?

這是我使用添加標記到地圖的方法。

private void setMarks(List<ShopList> shops) { 

    for(ShopList shopItem : shops){ 
     double latitude = shopItem.getLat(); 
     double longitude = shopItem.getLng(); 
     LatLng latLng = new LatLng(latitude,longitude); 


     String shopName = shopItem.getName(); 
     OverlayOptions textOption = new TextOptions() 
       .text(shopName) 
       .fontSize(50) 
       .position(latLng); 
     mBaiduMap.addOverlay(textOption); 


     Glide.with(mContext.getApplicationContext()) 
       .load(shopItem.getCategory_image()) 
       .asBitmap() 
       .placeholder(R.drawable.ic_shop_image_loading) 
       .error(R.drawable.ic_shop_image_load_error)  
       .override(SizeUtils.dip2px(mContext,128),SizeUtils.dip2px(mContext,128)) 
       .centerCrop()                
       .into(target);           
    } 
} 


這裏是滑翔回調代碼。

private SimpleTarget<Bitmap> target = new SimpleTarget<Bitmap>() { 
    @Override 
    public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { 
     BitmapDescriptor descriptor = BitmapDescriptorFactory.fromBitmap(resource); 
     Marker marker = (Marker) mBaiduMap.addOverlay(new MarkerOptions().position(latLng).icon(descriptor)); 
     mMarkers.add(marker); 
    } 

}; 

我不能提供latLang的參數,所以在onResourceReady我不能初始化標記,不能添加標記mMarkers也。我能做些什麼來將latLang與特定的位圖關聯起來?

回答

1

您必須創建自定義Target

public class MyTarget extends SimpleTarget<Bitmap> { 

    private final LatLng latLng; 

    public MyTarget(LatLng latLng) { 
     this.latLng = latLng; 
    } 

    @Override 
    public void onResourceReady(final Bitmap resource, final GlideAnimation<? super Bitmap> glideAnimation) { 
     // use your `latLng` 
    } 
} 

而且用這樣的方式:

Glide.with(...) 
    ...              
    .into(new MyTarget(latLng)); 
+0

感謝回答。我有深入的封裝概念。 – sunpeijie