(サーバーからダウンロードした) 画像を Google マップのマップ マーカーとして表示しようとしています。Google Map-Utils のパフォーマンスに満足できなかったため、Android-Maps-Extensions を使用しています。
今、AMEでマップマーカー画像を非同期にロードする方法を考えています。タスクは、クラスターでない場合に画像自体を表示することです。クラスターであれば、最初のマーカーの画像とクラスター内の要素数を表示したいです。
この時点までに、次のことを行いました。
1) マップ クラスタラーのセットアップ
private void setupMapClusterer() {
mClusterOptions = new EClusterOptionsProvider(getContext());
ClusteringSettings clusteringSettings = new ClusteringSettings();
clusteringSettings.addMarkersDynamically(true);
clusteringSettings.clusterOptionsProvider(mClusterOptions);
mMap.setClustering(clusteringSettings);
}
2) クラスター オプション プロバイダーを作成する
public EClusterOptionsProvider(Context context) {
mClusterOptions = new ClusterOptions();
mContext = context;
mIconGenerator = new IconGenerator(context);
// Inflate Layout
View markerView = LayoutInflater.from(context).inflate(R.layout.map_marker, null);
mImageView = (ImageView) markerView.findViewById(R.id.map_marker_image);
mTextView = (TextView) markerView.findViewById(R.id.map_marker_text);
// Setup Icon Generator
mIconGenerator.setContentView(markerView);
}
public Bitmap createIcon(Bitmap bmp, String text) {
mImageView.setImageBitmap(bmp);
mTextView.setText(text);
return mIconGenerator.makeIcon();
}
@Override
public ClusterOptions getClusterOptions(List<Marker> list) {
// Get Bitmap from first marker
Marker first = list.get(0);
mClusterOptions.icon(BitmapDescriptorFactory.fromBitmap(mIconGenerator.makeIcon()));
return mClusterOptions;
}
これにより、クラスターにカスタム ビューがあるマップが表示されますが (これは正しい)、画像をダウンロードする場所と、それらを単一のマーカー、特にクラスターに配置する方法がわかりません。
もちろん、事前にすべての画像をダウンロードしたくはありません (500 以上の画像について話しています)。
サイドノード: Volley を使用して画像を非同期的にダウンロードしています。