2012-04-25 36 views
6

Tôi đang viết một ứng dụng Android đơn giản sử dụng osmdroid hoạt động trực tuyến ngoại tuyến cho đến bây giờ tôi có thể hiển thị bản đồ (trực tuyến và ngoại tuyến) và tôi muốn thêm lớp phủ (điểm đánh dấu) vào bản đồ, tôi đã tìm kiếm ví dụ đơn giản để sử dụng lớp phủ trong osmdroid và tôi đã thử một số trong số đó nhưng chúng không hoạt động, vì vậy tôi muốn bất kỳ ví dụ nào về việc thêm lớp phủ hoặc marcker bằng cách sử dụng osmdroidthêm Lớp phủ vào một MapView trong osmdroid

+0

hello @AbdalwhabBakheet .... dự án của bạn đã được giải quyết ngay bây giờ chưa? Tôi tự hỏi nếu bạn sẽ chia sẻ một số hướng dẫn trên mạng, phải không? – gumuruh

Trả lời

2

Nhìn vào lớp ItemizedIconOverlay.

Có một vài ví dụ trên internet nếu bạn tìm kiếm, ví dụ đã được đăng tải trên Stack Overflow đây: Adding Overylay to OSMDROID

+1

cảm ơn Martin Pearman, nó làm việc tốt với tôi nhưng tôi nhận thấy rằng nó requier việc sử dụng Internet và nếu tôi setUseDataConnection (false) sau đó một lỗi xảy ra nó có thể làm việc ngoại tuyến, và có bất kỳ cách nào khác để đánh dấu các điểm trong bản đồ –

+0

Nếu mã hoạt động và Lớp phủ được thêm chính xác vào MapView khi UseDataConnection được đặt thành true thì mã giống nhau cũng sẽ hoạt động khi UseDataConnection được đặt thành false. Lỗi nào bạn nhận được khi UseDataConnection được đặt thành false? –

+0

cảm ơn Martin Pearman, tôi kiểm tra mã của tôi một lần nữa và nó hoạt động tốt với setUseDataConnection (false) Tôi nghĩ rằng những gì đã sai, có lẽ tôi đã cố gắng để hiển thị một Lớp phủ trong một phần của bản đồ mà không được tải xuống –

1
public class mapcode extends Activity { 
    globalvar appState; 
    int stats=0; 
    private MapView mapView; 
    private IMapController mapController; 
    private SimpleLocationOverlay mMyLocationOverlay; 
    private ScaleBarOverlay mScaleBarOverlay; 
    ItemizedIconOverlay<OverlayItem> currentLocationOverlay; 
    DefaultResourceProxyImpl resourceProxy; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.map); 

     appState = ((globalvar) getApplicationContext()); 





     mapView = (MapView) this.findViewById(R.id.mapview); 
     mapView.setTileSource(TileSourceFactory.MAPNIK); 
     // mapView.setBuiltInZoomControls(true); //кнопка ZOOM +- 
     mapView.setMultiTouchControls(true); 

     mapController = this.mapView.getController(); 
     mapController.setZoom(2); 

     this.mMyLocationOverlay = new SimpleLocationOverlay(this);       
     this.mapView.getOverlays().add(mMyLocationOverlay); 

     this.mScaleBarOverlay = new ScaleBarOverlay(this);       
     this.mapView.getOverlays().add(mScaleBarOverlay); 


     ///////////////// 
     resourceProxy = new DefaultResourceProxyImpl(getApplicationContext()); 
     GeoPoint currentLocation = new GeoPoint(55.860863,37.115046); 
     GeoPoint currentLocation2 = new GeoPoint(55.8653,37.11556); 
     OverlayItem myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation); 
     Drawable myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a); 
     myLocationOverlayItem.setMarker(myCurrentLocationMarker); 

     final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); 
     items.add(myLocationOverlayItem); 



     myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation2); 
    myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a); 
     myLocationOverlayItem.setMarker(myCurrentLocationMarker); 


     items.add(myLocationOverlayItem); 



     currentLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items, 
       new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 
        public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
         return true; 
        } 
        public boolean onItemLongPress(final int index, final OverlayItem item) { 
         return true; 
        } 
       }, resourceProxy); 
     this.mapView.getOverlays().add(this.currentLocationOverlay); 

mapView.invalidate(); // для того чтобы маркеры появились }

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