0

もう一度、私は先人の知恵を求めます...

Google マップを使用し、Web から読み取ったファイルのステータス情報に基づいてプログラムでマーカーをマップに配置する Android アプリに取り組んでいます。

私が抱えている問題は、各マーカーが 2 回描画されることです。1 回は正しい位置に、もう 1 回は少し下に移動します (2 番目のマーカーの上部の線は最初のマーカーの下部と一致します)。

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());
    }
}

ただし、2 番目のマーカーは、描画関数で boundCenterBottom(marker) のコメントを外した場合にのみ明らかになります。

私は何日もの間、2番目のマーカーを配置しているものを試してみました. 誰かが私を正しい方向に向けることができますか?

ありがとう

編集:画面に触れると、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 に答える