Creé una clase OverlayItem personalizada para poder tener esencialmente un tipo de elemento de superposición cuyo marcador Drawable se establecería en función del estado de algunos datos que pase a él.Custom OverlayItem no dibujo
He intentado lograr esto, en mi primer intento, utilizando el método setMarker
dentro de la clase OverlayItem. Una vez que eso no funcionó, intento anular el método getMarker
y hacer que devuelva el marcador apropiado para representar los datos.
Ambos intentos terminaron sin que se dibujara nada en el mapa ... sin embargo, si están comentados, los marcadores dibujan bien (excepto que por supuesto usan el marcador predeterminado, que no es lo que quiero).
Aquí está mi código para mi clase OverlayItem personalizado (los métodos comentados fuera, me han intentado y no han trabajado):
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);
}*/
}
¿Hay una manera de hacer lo que estoy tratando de hacer ... ¿o necesito crear una clase OverlayItem única que corresponda a cada estado de mis datos? (Ew.)
¿Te refieres al método draw (...)? Parece como si fuera demasiado complicado y demasiado provisional. La documentación indica que, "Un elemento puede proporcionar un marcador alternativo a través de su método OverlayItem.getMarker (int). Si ese método devuelve nulo, se utiliza el marcador predeterminado," por lo que no debería ser capaz de anular el método getMarker y hacer que dibuje los diferentes marcadores? – celestialorb