カスタム OverlayItem クラスを作成して、渡したデータの状態に応じて Drawable マーカーが自動的に設定される 1 種類の OverlayItem を基本的に持つことができるようにしました。
setMarker
私は、OverlayItem クラス内のメソッドを利用して、最初の試みでこれを達成しようとしました。それが機能しない場合は、メソッドをオーバーライドしてgetMarker
、データを表す適切なマーカーを返すようにします。
これらの試みは両方とも、マップ上に何も描画されずに終了しました...ただし、コメントアウトされている場合、マーカーは問題なく描画されます(もちろん、デフォルトのマーカーを使用しますが、これは私が望んでいるものではありません)。
これが私のカスタム OverlayItem クラスのコードです (私が試したコメントアウトされたメソッドは機能しませんでした):
private class MyOverlayItem extends OverlayItem {
private Context mContext;
private MyData mData;
public MyOverlayItem(GeoPoint point, MyData data, Context context) {
super(point, data.getWhat(), data.getWhere());
this.mContext = context;
this.mData = data;
/*if(data.getTemp() > 200)
this.setMarker(res.getDrawable(R.drawable.icon_data_hot_l));
else if(data.getTemp() > 100)
this.setMarker(res.getDrawable(R.drawable.icon_data_neutral_l));
else
this.setMarker(res.getDrawable(R.drawable.icon_data_frozen_l));*/
}
/*@Override
public Drawable getMarker(int stateBitset) {
Resources res = this.mContext.getResources();
if(this.mData.getTemp() > 200)
return res.getDrawable(R.drawable.icon_data_hot_l);
else if(this.mData.getTemp() > 100)
return res.getDrawable(R.drawable.icon_data_neutral_l);
return res.getDrawable(R.drawable.icon_data_frozen_l);
}*/
}
私がやろうとしていることを行う方法はありますか...または、データの各状態に対応する一意のOverlayItemクラスを作成する必要がありますか? (Ew.)