Utworzono niestandardową klasę OverlayItem, dzięki czemu mogłem zasadniczo mieć jeden rodzaj OverlayItem, którego znacznik Draw ustawiałby sam w zależności od stanu niektórych danych, które do niego wprowadziłem.Niestandardowy nakładkaItem nie rysuje
Próbowałem tego dokonać przez, przy mojej pierwszej próbie, użycie metody setMarker
w klasie OverlayItem. Gdy to nie zadziałało, próbuję zastąpić metodę getMarker
i zwrócić mu odpowiedni znacznik do reprezentowania danych.
Obie te próby zakończyły się, gdy nic nie zostało narysowane na mapie ... jednak jeśli zostaną one skomentowane, znaczniki się poprawiają (oprócz tego, że używają domyślnego znacznika, który nie jest tym, czego chcę).
Oto mój kod dla mojej klasy niestandardowe OverlayItem (zakomentowanym sposoby próbowałem i oni nie pracowali):
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);
}*/
}
Czy istnieje sposób, aby robić to, co ja próbuje zrobić ... lub czy muszę utworzyć unikalną klasę OverlayItem odpowiadającą każdemu stanowiowi moich danych? (Ew.)
Masz na myśli metodę losowania (...)? Wydaje się, że byłoby to zbyt skomplikowane i zbyt skomplikowane. Dokumentacja stwierdza, że "element może dostarczyć alternatywny znacznik za pomocą metody OverlayItem.getMarker (int) .Jeśli ta metoda zwróci wartość null, używany jest znacznik domyślny", więc nie powinienem mieć możliwości nadpisania metody getMarker i czy narysuje różne znaczniki? – celestialorb