2012-05-10 44 views
5

Tôi đang sử dụng ItemizedIconOverlay class và tôi hiện đang hiển thị các sự kiện trên bản đồ cùng với vị trí của người dùng có cùng biểu tượng mặc định.OSMdroid thêm biểu tượng tùy chỉnh vào ItemizedOverlay

Làm cách nào để thay đổi bộ biểu tượng cho mỗi lớp phủ?

Có một cái gì đó giống như ví dụ google.maps:

drawable = getResources().getDrawable(R.drawable.marker); 
    drawable3 = getResources().getDrawable(R.drawable.disruption); 
    drawable2 = getResources().getDrawable(R.drawable.marker_me); 

    itemizedOverlay = new MyItemizedOverlay(drawable, mapView); 
    itemizedOverlay2 = new MyItemizedOverlay(drawable2, mapView); 
    itemizedOverlay3 = new MyItemizedOverlay(drawable3, mapView); 

Tôi đã từng itemizedOverlay có dấu hiệu riêng của mình ...

Làm thế nào để làm điều này với mở đường Maps?

mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext()); 
this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy); 

Cảm ơn bạn đã giúp đỡ của bạn và một sự xấu hổ của nó không có nhiều hỗ trợ có sẵn trực tuyến cho dự án mã nguồn mở này ...

Trả lời

17

lẽ mItems của bạn là một ArrayList của OverlayItems tạo như:

mItems = new ArrayList<OverlayItem>(); 

Để danh sách này, bạn sẽ thêm từng mục OveralyItems, vì vậy khi bạn tạo từng mục, bạn có thể làm như thế, thiết lập điểm đánh dấu trước khi thêm nó vào danh sách:

OverlayItem olItem = new OverlayItem("Here", "SampleDescription", point); 
Drawable newMarker = this.getResources().getDrawable(R.drawable.mymarker); 
olItem.setMarker(newMarker); 
mItems.add(olItem); 

nơi mymarker là tệp .png trong thư mục drawables của bạn.

Cập nhật - để thiết lập đánh dấu mặc định cho toàn bộ lớp phủ, thay đổi

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, new Glistener(), mResourceProxy); 

để

this.mMyLocationOverlay = new ItemizedIconOverlay<OverlayItem>(mItems, newMarker, new Glistener(), mResourceProxy); 

nơi newMarker được như trước

+0

Cảm ơn bạn nó làm việc! – bubbly

+0

Nhưng tôi có thể thêm điểm đánh dấu mặc định cho toàn bộ lớp phủ không? Giống như itemizedOverlay = new MyItemizedOverlay (drawable, mapView); và sau đó mỗi mục được thêm vào lớp phủ đó sẽ nhận được điểm đánh dấu cụ thể. – bubbly

+1

Có, có vẻ như có một hàm tạo khác hiện có dấu đánh dấu mặc định. Tôi sẽ chỉnh sửa câu trả lời của mình bằng bản cập nhật – NickT

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