首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义OverlayItem未绘制

自定义OverlayItem未绘制
EN

Stack Overflow用户
提问于 2010-08-11 04:07:59
回答 4查看 7K关注 0票数 9

我创建了一个自定义的OverlayItem类,这样我基本上就可以拥有一种OverlayItem,它的可绘制标记将根据我传递给它的某些数据的状态自行设置。

在第一次尝试时,我曾尝试使用OverlayItem类中的setMarker方法来完成此任务。一旦这不起作用,我就尝试重写getMarker方法,并让它返回适当的标记来表示数据。

这两次尝试都没有在map...however上绘制任何内容,如果它们被注释掉,标记绘制得很好(当然,它们使用默认标记,这不是我想要的)。

以下是我的自定义OverlayItem类的代码(我尝试过的注释掉的方法,但它们都不起作用):

代码语言:javascript
复制
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);
    }*/
}

有没有办法去做我正在尝试做的事情呢?我是否需要创建一个唯一的do...or类来对应于我的数据的每种状态?(Ew.)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-11 06:35:16

我已经能够让标记出现,但它们看起来颠倒了(至少,我认为它们是颠倒的,可能只是它们的阴影在左上角而不是右下角)。

我所需要做的就是添加下面这行:

代码语言:javascript
复制
this.mMarker.setBounds(0, 0, this.mMarker.getIntrinsicWidth(), this.mMarker.getIntrinsicHeight());

...as以及此行以正确定位标记(当我的ItemizedOverlay添加了棕色覆盖项时,我添加了以下内容:

代码语言:javascript
复制
overlay.setMarker(boundCenterBottom(overlay.getMarker(0)));
票数 4
EN

Stack Overflow用户

发布于 2010-08-12 05:11:35

API声明标记需要边界才能显示...

@celestialorb当你单独使用setBounds()时,你会得到你告诉它做的事情……标记的边界框已设置。指向OverlayItem的点和标记的阴影状态等的方向被设置为默认值(我没有查找它们,但它们不会做我想要的事情...) :)

mOverlay.setMarker(boundCenterBottom(mOverlay.getMarker(0)));为您完成了这项工作,设置边界并将标记的底部居中放置在Point上(因此才有了时尚的方法名称)。

现在,至于最佳实践,比我更聪明的灯泡将不得不加入...

票数 2
EN

Stack Overflow用户

发布于 2010-08-11 04:24:06

尝试重写overlay类的onDraw()方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3452972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档