2017-04-04 10 views
2

私はBaidu Mapを使用して、画像URLを含むサーバーから得た店舗を表示します。 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

関連する問題