2012-04-25 9 views
6

Piszę prostą aplikację na Androida za pomocą osmdroida, która działa online w trybie offline do teraz mogę wyświetlać mapę (online i offline), i chcę dodać nakładkę (znaczniki) na map, szukałem prostego przykładu użycia nakładki w osmdroidie i próbowałem niektórych z nich, ale nie działały, więc chcę dowolnego przykładu dodania nakładki lub marckera za pomocą osmdroidaDodawanie nakładki do MapView w osmdroidie

+0

Witam @AbdalwhabBakheet .... czy Twój projekt został rozwiązany właśnie teraz? Zastanawiam się, czy chciałbyś udostępnić kilka tutoriali w sieci, prawda? – gumuruh

Odpowiedz

2

Spójrz na klasę ItemizedIconOverlay.

Istnieje kilka przykładów w internecie, jeśli szukać, przykładem została wysłana na przepełnienie stosu tutaj: Adding Overylay to OSMDROID

+1

dziękuje Martinowi Pearmanowi, działa dobrze ze mną, ale zauważam, że wymaga to korzystania z Internetu, a jeśli ustawięUseDataConnection (false), to wystąpi błąd, czy może działać offline, i czy istnieją inne sposoby oznaczania punktów na mapie –

+0

Jeśli kod działa, a nakładka jest poprawnie dodana do MapView, gdy właściwość UseDataConnection ma wartość true, ten sam kod powinien również działać, gdy parametr UseDataConnection ma wartość false. Jaki błąd pojawia się, gdy właściwość UseDataConnection ma wartość false? –

+0

dziękuje Martinowi Pearmanowi, testuję mój kod ponownie i działa dobrze z setUseDataConnection (fałsz) Myślę, że coś było nie tak, że może próbowałem wyświetlić nakładkę w części mapy, która nie została pobrana –

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