我创建的自定义类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()方法。

下面是另一种方法:

的GoogleMaps:定制ItemizedOverlay和OverlayItem,正确的方式来显示不同的标记

我想我更喜欢这个答案虽然...谢谢!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top