marker in the osm Map with osmdroid

13,212

Solution 1

Look at these lines of code:

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

        final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
        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);

I hope this will help you.

Solution 2

add markerThey all ate as did :)

working code:

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);

}
Share:
13,212
Admin
Author by

Admin

Updated on June 09, 2022

Comments

  • Admin
    Admin almost 2 years

    I am trying to display a marquer in OSM, but can't. I can display the OSM map and the location of my phone, but nothing else.

    Here is my code:

    public class Carte2Activity extends Activity implements LocationListener {
        MapView mapView;
        MapController myMapController;
        MyLocationOverlay location = null;
        double lat;
        double lng;
        LocationManager lm;
        LocationListener ll;
    
        ArrayList<OverlayItem> anotherOverlayItemArray;
        String[] sources;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main); 
            mapView = (MapView)findViewById(R.id.openmapview);
            mapView.setBuiltInZoomControls(true);
            mapView.setMultiTouchControls(true);
    
            lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
            ll = new Myll();
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0,ll);
    
            myMapController = mapView.getController();
            myMapController.setZoom(10);
            myMapController.setCenter(new GeoPoint((int)(48.785152*1E6), (int)(2.285156*1E6)));
    
    
            location = new MyLocationOverlay(getApplicationContext(), mapView);
    
           //ajouter la loc
            mapView.getOverlays().add(location);
            //afficher
            location.enableMyLocation();
    
        }      
    
        private class Myll implements LocationListener{
    
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub
            lat = location.getLatitude();
            lng = location.getLongitude();
            run();
        }
    
        public void run() {
            // TODO Auto-generated method stub
            location.runOnFirstFix(new Runnable() { public void run() {
                mapView.getController().animateTo(location.getMyLocation());
                }}); 
        }
    
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub      
        }
    
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub      
        }
    
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub      
        }
    }
    
        public void onLocationChanged(Location location) {
            // TODO Auto-generated method stub      
        }
    
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub      
        }
    
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub      
        }
    
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub
    
        }
    }
    

    androidManifest :

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="comparateur.carte"
    android:versionCode="1"
    android:versionName="1.0" >
    
    <uses-sdk android:minSdkVersion="15" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Carte2Activity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

    I don't see how I can do that. Can somebody help me?