2008-08-25 37 views
47

Có ai đã quản lý để sử dụng ItemizedOverlays trong Android Beta 0.9 không? Tôi không thể làm cho nó hoạt động được, nhưng tôi không chắc mình đã làm gì sai hay chức năng này chưa có.Sử dụng ItemizedOverlay và OverlayItem Trong Android Beta 0.9

Tôi đã cố gắng sử dụng các lớp học ItemizedOverlayOverlayItem. Mục đích dự định của họ là mô phỏng các điểm đánh dấu bản đồ (như đã thấy trong Google Maps Mashup) nhưng tôi đã gặp sự cố khi khiến chúng xuất hiện trên bản đồ.

Tôi có thể thêm lớp phủ tùy chỉnh của riêng mình bằng cách sử dụng kỹ thuật tương tự, chỉ là ItemizedOverlays không hoạt động.

Khi đã triển khai ItemizedOverlay (và ghi đè lên), việc tạo một thể hiện mới của tôi dường như hoạt động (tôi có thể trích xuất OverlayItems từ nó), nhưng thêm nó vào danh sách Lớp phủ của bản đồ không làm cho nó xuất hiện như là nó phải như thế.

Đây là mã tôi sử dụng để thêm lớp ItemizedOverlay làm Lớp phủ vào số MapView của mình.

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

đâu MyItemizedOverlay được định nghĩa là:

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

Trả lời

36

Vì lợi ích của sự hoàn chỉnh, tôi sẽ lặp lại các cuộc thảo luận về bài đăng Reto của hơn tại Android Groups đây.

Dường như nếu bạn định bờ cõi trên drawable của bạn nó lừa:

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

Bằng cách này, ở trên là không biết xấu hổ tách từ bản demo tại MarcelP.info. Xem thêm here để biết cách sử dụng tốt.

+0

chỉ là tôi hoặc người cuối cùng của bạn như trống? – Reno

Các vấn đề liên quan