2012-04-25 16 views
6

Estoy escribiendo una aplicación de android simple usando osmdroid que funciona en línea y hasta ahora puedo ver el mapa (en línea y fuera de línea) y quiero agregar superposición (marcadores) en el mapa, tuve la búsqueda de un ejemplo simple para usar la superposición en osmdroid y probé algunos de ellos pero no funcionaron, así que quiero un ejemplo para agregar superposición o marcador usando osmdroidagregando superposición a una vista de mapa en osmdroid

+0

hello @AbdalwhabBakheet .... ¿Ya se ha resuelto su proyecto? Me pregunto si compartirías algunos tutoriales en la red, ¿no? – gumuruh

Respuesta

2

Mire la clase ItemizedIconOverlay.

Hay algunos ejemplos en el Internet si se busca, un ejemplo ha sido publicado en desbordamiento de pila aquí: Adding Overylay to OSMDROID

+1

gracias Martin Pearman, funciona bien conmigo, pero me doy cuenta de que requiere el uso de Internet y si configuro UseUseDataConnection (falso) se produce un error puede funcionar sin conexión, y hay otras formas de marcar puntos en el mapa –

+0

Si el código funciona y la Superposición se agrega correctamente a la Vista de mapa cuando UseDataConnection se establece en verdadero, entonces el mismo código también debería funcionar cuando UseDataConnection se establezca en falso. ¿Qué error está recibiendo cuando UseDataConnection está configurado en falso? –

+0

gracias Martin Pearman, pruebo mi código nuevamente y funciona bien con setUseDataConnection (falso) Creo que fue un error que tal vez estaba tratando de mostrar una Superposición en una parte del mapa que no se descargó –

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

Cuestiones relacionadas