0

我再一次寻求我的长辈的智慧……

我正在开发一个使用谷歌地图的 Android 应用程序,并根据从网络读取的文件中的状态信息以编程方式在地图上放置标记。

我遇到的问题是每个标记都被绘制了两次。一次在正确的位置,一次在下方(第二个标记的顶线与第一个标记的底部对齐)。

private class SitesOverlay extends ItemizedOverlay<OverlayItem> {
    private List<OverlayItem> items=new ArrayList<OverlayItem>();
    private Drawable marker=null;

    public SitesOverlay(Drawable marker) {
        super(marker);
        this.marker=marker;

        try {
            data = getData();
        } catch (MalformedURLException e) {
            //
        }

        if (!data.equals("")) {
            String[] msg = data.split(NEWLINE);

            for (Integer i = 0; i < msg.length; i++) {
                items.add(new OverlayItem(
                        getPoint(lat.get(suburb), lng.get(suburb)),
                        msg[i], msg[i]));
            }
        }

        populate();
        map.postInvalidate();
    }

    @Override
    protected OverlayItem createItem(int i) {
        return(items.get(i));
    }

    @Override
    public void draw(Canvas canvas, MapView mapView,
                boolean shadow) {
        super.draw(canvas, mapView, false);
        //boundCenterBottom(marker);
    }

    @Override
    protected boolean onTap(int i) {
        Toast.makeText(getBaseContext(),
            items.get(i).getSnippet(),
            Toast.LENGTH_LONG).show();
        map.getController().setZoom(16 + zoomModifier);
        return(true);
    }

    @Override
    public int size() {
        return(items.size());
    }
}

但是,只有在我取消对 draw 函数中的 boundCenterBottom(marker) 的注释时,第二个标记才会变得明显。

几天来,我一直在尝试锻炼放置第二个标记的内容。谁能指出我正确的方向?

谢谢

编辑:我忘了提到,如果我触摸屏幕,不是boundCenterBottom 的标记就会消失。

4

1 回答 1

1

好的,终于弄清楚出了什么问题。

改变

public SitesOverlay(Drawable marker) {
    super(marker);
    this.marker=marker;

public SitesOverlay(Drawable marker) {
    super(marker);
    boundCenterBottom(marker);
于 2012-02-24T13:37:45.573 回答