2012-04-25 17 views
6

Sto scrivendo una semplice applicazione Android usando osmdroid che funziona online offline fino ad ora sono in grado di visualizzare la mappa (online e offline), e voglio aggiungere overlay (marcatori) sul mappa, ho cercato un semplice esempio di utilizzo di overlay in osmdroid e ho provato alcuni di essi ma non hanno funzionato, quindi voglio qualsiasi esempio per aggiungere overlay o marcker usando osmdroidaggiungi Overlay a MapView in osmdroid

+0

ciao @AbdalwhabBakheet .... il tuo progetto è stato risolto in questo momento? Mi chiedo se tu voglia condividere alcuni tutorial in rete, non è vero? – gumuruh

risposta

2

Guarda la classe ItemizedIconOverlay.

Ci sono alcuni esempi su internet se si cerca, ad esempio è stata pubblicata su Stack Overflow qui: Adding Overylay to OSMDROID

+1

grazie a Martin Pearman, funziona bene con me ma noto che richiede l'uso di internet e se setUseDataConnection (false) allora si verifica un errore può funzionare offline, e ci sono altri modi per contrassegnare i punti nella mappa –

+0

Se il codice funziona e l'Overlay viene aggiunto correttamente a MapView quando UseDataConnection è impostato su true, lo stesso codice dovrebbe funzionare anche quando UseDataConnection è impostato su false. Che errore si verifica quando UseDataConnection è impostato su false? –

+0

grazie a Martin Pearman, eseguo nuovamente il test del mio codice e funziona perfettamente con setUseDataConnection (false) Penso che cosa non andava che forse stavo cercando di visualizzare una sovrapposizione in una parte della mappa che non è stata scaricata –

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(); // для того чтобы маркеры появились }

Problemi correlati