2008-08-25 106 views
47

是否有人設法在Android Beta 0.9中使用ItemizedOverlays?我無法讓它工作,但我不確定我是否做錯了什麼,或者如果這個功能還沒有提供。使用ItemizedOverlay和OverlayItem在Android Beta 0.9中

我一直在嘗試使用ItemizedOverlayOverlayItem類。他們的目的是模擬地圖標記(如Google Maps Mashups中所示),但我在將它們顯示在地圖上時遇到了問題。

我可以使用類似的技術添加我自己的自定義疊加層,它只是ItemizedOverlays不起作用。

一旦我實現了自己的ItemizedOverlay(和重寫的createItem),創建我的類的一個新實例似乎工作(我可以從中提取OverlayItems),但將其添加到地圖的Overlay列表不會顯示正如它應該。

這是我用來將ItemizedOverlay類添加到我的MapView上的Overlay的代碼。

// Add the ItemizedOverlay to the Map 
private void addItemizedOverlay() { 
    Resources r = getResources(); 
    MapView mapView = (MapView)findViewById(R.id.mymapview); 
    List<Overlay> overlays = mapView.getOverlays(); 

    MyItemizedOverlay markers = new MyItemizedOverlay(r.getDrawable(R.drawable.icon)); 
    overlays.add(markers); 

    OverlayItem oi = markers.getItem(0); 
    markers.setFocus(oi); 
    mapView.postInvalidate(); 
} 

MyItemizedOverlay被定義爲:

public class MyItemizedOverlay extends ItemizedOverlay<OverlayItem> { 
    public MyItemizedOverlay(Drawable defaultMarker) { 
    super(defaultMarker); 
    populate(); 
    } 

    @Override 
    protected OverlayItem createItem(int index) { 
    Double lat = (index+37.422006)*1E6; 
    Double lng = -122.084095*1E6; 
    GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue()); 

    OverlayItem oi = new OverlayItem(point, "Marker", "Marker Text"); 
    return oi; 
    } 

    @Override 
    public int size() { 
    return 5; 
    } 
} 

回答

36

爲了完整起見,我會在這裏Android Groups重複上雷託的帖子討論過。

看來,如果你設置你的繪製邊界它的伎倆:

Drawable defaultMarker = r.getDrawable(R.drawable.icon); 

// You HAVE to specify the bounds! It seems like the markers are drawn 
// through Drawable.draw(Canvas) and therefore must have its bounds set 
// before drawing. 
defaultMarker.setBounds(0, 0, defaultMarker.getIntrinsicWidth(), 
    defaultMarker.getIntrinsicHeight()); 

MyItemizedOverlay markers = new MyItemizedOverlay(defaultMarker); 
overlays.add(markers); 

順便說,上面在MarcelP.info從演示無恥扯下。另請參閱here,這是一個很好的howto。

+0

只是我還是你最後一個像是空的? – Reno 2011-01-23 09:48:23

相關問題