Дублирующиеся маркеры в SitesOverlay - PullRequest
0 голосов
/ 23 февраля 2012

Еще раз я ищу мудрости моих подопечных ...

Я работаю над приложением для Android, которое использует Карты Google и программно размещает маркеры на карте на основе информации о состоянии из файла, считываемого из Интернета.

У меня проблема в том, что каждый маркер рисуется дважды. Один раз в правильном месте и один раз чуть ниже (верхняя строка второго маркера совпадает с нижней частью первого маркера).

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

Однако второй маркер становится видимым, только если я раскомментирую boundCenterBottom (marker) в функции рисования.

Я пытался выяснить, что ставит второй маркер в течение нескольких дней. Кто-нибудь может указать мне правильное направление?

Спасибо

РЕДАКТИРОВАТЬ: я забыл упомянуть, что если я коснусь экрана, маркер, который не boundCenterBottom исчезнет.

1 Ответ

1 голос
/ 24 февраля 2012

Хорошо, наконец-то выяснилось, что было не так.

Изменение

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

до

public SitesOverlay(Drawable marker) {
    super(marker);
    boundCenterBottom(marker);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...