OverlayItem не отображает маркеры! - PullRequest
0 голосов
/ 05 июля 2010

У меня есть следующий код, и маркеры вообще не отображаются на карте!

private class SitesOverlay extends ItemizedOverlay<pfOverlayItem> {

    private List<pfOverlayItem> items=new ArrayList<pfOverlayItem>();
    //private   PopupPanel panel=new PopupPanel(R.layout.popup);

    public SitesOverlay() {
        super(null);

        items = mainOverlayArray;

        populate();

    }

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

    @Override
    public void draw(Canvas canvas, MapView mapView,
                                        boolean shadow) {
        super.draw(canvas, mapView, shadow);

    }


    @Override
    public int size() {

        return(items.size());

    }



    private Drawable getMarker(int resource) {
        Drawable marker=getResources().getDrawable(resource);

        marker.setBounds(0, 0, marker.getIntrinsicWidth(),
                                            marker.getIntrinsicHeight());
        boundCenter(marker);

        return(marker);
    }
}

mainOverlayArray заполнен pfOverlayItem и код для этого класса

public class pfOverlayItem extends OverlayItem {
private String coolText;

public String getcoolText() {
    return coolText;
}

public void setcoolText(String coolText) {
    this.coolText = coolText;
}

public pfOverlayItem(GeoPoint point, String title, String snippet) {
    super(point, title, snippet);
    // TODO Auto-generated constructor stub
}

}

Я также установил маркер за пределами этого после обработки файла XML ...

 ArrayList<pfOverlayItem> overArray = myXMLHandler.getOverlayArray();
                mainOverlayArray = overArray;
                pfOverlayItem tempOver = null;
                Drawable marker = getResources().getDrawable(R.drawable.icon);
                for (int i = 0; i < mainOverlayArray.size(); i++) {
                    tempOver = mainOverlayArray.get(i);
                    tempOver.setMarker(marker);
                }

                sites=new SitesOverlay();
                myMapView.getOverlays().add(sites);
                myMapView.invalidate(); [/code]

1 Ответ

3 голосов
/ 06 июля 2010

Выглядит так, как будто вы начинаете с одного моего многих образца Google карты приложения . Ваш код, показанный здесь, является неполным (например, согласно приведенному здесь коду вы никогда не создаете OverlayItem экземпляров).

Я рекомендую вам откатиться к одному из примеров, на которые я ссылаюсь выше, и начать оттуда изменять, или вы пытаетесь выяснить, какие из ваших методов вызывают, а какие нет.

...