2010-07-05 116 views
0

我有以下代碼,標記根本沒有出現在地圖上!OverlayItem不顯示標記!

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] 

回答

3

看起來好像你從我的的one開始sampleGoogleMapapplications。此處顯示的代碼不完整(例如,根據此處的代碼,您從不創建任何OverlayItem實例)。

我的建議是回滾到上面鏈接的樣本之一,並從那裏開始修改,或者開始嘗試找出哪些方法正在調用,哪些不是。

+0

是的,謝謝。我確實從樣本開始,但用我自己的替代OverlayItem,因爲我想進一步擴展它。什麼位讓你覺得它從來沒有被稱爲? 我有一個方法可以創建一個完整的pfOverlayItems數組(mainOverlayArray) – 2010-07-05 20:13:30

+1

@Lee Armstrong:填充'mainOverlayArray'不在你上面​​顯示的代碼中。 – CommonsWare 2010-07-05 20:25:51

+0

我明白了。我只是做了一個測試與另一個例子,它的工作原理.....這是一個使用「公共SitesOverlay(可繪製標記)」。看起來標記沒有被拉到我的自定義對象上,我是否在延伸OverlayItem的第二個代碼塊中缺少任何東西? (0,0,marker.getIntrinsicWidth(),marker.getIntrinsicHeight()); – 2010-07-05 20:42:12