自OverlayItem没有画图
-
27-09-2019 - |
题
我创建的自定义类OverlayItem这样我可以基本上具有一种OverlayItem其可绘制标记本身将取决于一些数据的状态,我进入它设置的。
我已经尝试通过做到这一点,在我的第一次尝试中,利用OverlayItem类内的方法setMarker
。一旦没有工作我试图覆盖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)
解决方案
我已经能够做出标记出现,但它们出现倒置(至少我认为是这样,它可能仅仅是因为他们的影子是在左上角,而不是右下)。
所有我需要做的是添加此行:
this.mMarker.setBounds(0, 0, this.mMarker.getIntrinsicWidth(), this.mMarker.getIntrinsicHeight());
...以及此行方向正确标记(我加了这个时候,我ItemizedOverlay增加了棕褐色覆盖项:
overlay.setMarker(boundCenterBottom(overlay.getMarker(0)));
其他提示
要显示的API状态,标记需要边界...
@celestialorb无论你的片段中的一个单独做工作(或矿用两种反正工作) 当您使用的setBounds()独自一人,你会得到你告诉它做什么?你的标记包围盒集。该方位标记的OverlayItem的角度和阴影状态等被设置为默认值(不看这些,但他们不这样做我想要什么...):)
mOverlay.setMarker(boundCenterBottom(mOverlay.getMarker(0)));不完整的工作对你来说,设定界限和定心标记的点(因此时尚的方法名称)的底部。
现在,作为最佳实践,更亮的灯泡比我将不得不附和......
尝试重写叠加层类的onDraw()
方法。