0

I am using this library : https://github.com/osmdroid/osmdroid

I am trying to add marker on touch event to my MapView (of OSMDroid), but could not succeed.

I tried with this guidelines, but no succeess: http://android-er.blogspot.com/2012/05/implement-onitemgesturelistener-on.html

The sample code is below:

OnItemGestureListener<OverlayItem> myOnItemGestureListener
    = new OnItemGestureListener<OverlayItem>(){

  @Override
  public boolean onItemLongPress(int arg0, OverlayItem arg1) {
   // TODO Auto-generated method stub
   return false;
  }

  @Override
  public boolean onItemSingleTapUp(int index, OverlayItem item) {
   Toast.makeText(AndroidOpenStreetMapViewActivity.this, 

     item.mDescription+item.mTitle+item.mGeoPoint.getLatitudeE6() +":" 

+item.mGeoPoint.getLongitudeE6(), 


  Toast.LENGTH_LONG).show();

   return true;

  }

I am trying to code above section in C# which you can see blow. But When Touch In screen Device Method OnSingleTapConfirmed In Class MapOverlay Called.Problem In Value MotionEvent That To Add Marker. Postion The Mistake.Precision Value MotionEvent For Add Marker.Please Helps few days Solved Problem involved

  public class MapOverlay : Overlay
    {
        Context _ctx;


        public MapOverlay(Context ctx ) : base(ctx)
        {
            _ctx = ctx;

        }

        protected MapOverlay(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
        {

        }
        //the mistake Position MotionEvent For Add Marker
        public override bool OnSingleTapConfirmed(MotionEvent e, Osmdroid.Views.MapView mapView)
        {

             mapView.SetBuiltInZoomControls(true);
            var myMapController = mapView.Controller;
            myMapController.SetZoom(2);
            var myoverlayPointt = new OverlayItem("MyTitle", "MyText",
              //the mistake Position MotionEvent For Add Marker
              new Osmdroid.Util.GeoPoint(e.RawX,e.RawY));

            var myoverlays = new List<OverlayItem>();
            myoverlays.Add(myoverlayPointt);


            var myItemIconOverlays = new Osmdroid.Views.Overlay.
                ItemizedIconOverlay(_ctx, myoverlays, null);
            mapView.Overlays.Add(myItemIconOverlays);
            ScaleBarOverlay myScaleBarOverlay = new ScaleBarOverlay(_ctx);
            mapView.Overlays.Add(myScaleBarOverlay);

            return true;
        }

        public override void Draw(Canvas c, Osmdroid.Views.MapView osmv, bool shadow)
        {
        }


    }

    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        Osmdroid.Views.MapView mapview;
        private MapOverlay mmapOverlay = null;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.layout2);
        mapview = FindViewById<Osmdroid.Views.MapView>(Resource.Id.mapView1);

            var myMapController = mapview.Controller;
            myMapController.SetZoom(7);
            //Add Marker
            var myoverlayPoint = new OverlayItem("MyTitle", "MyText",
                new Osmdroid.Util.GeoPoint(29.62427, 52.53181));


            var myoverlays = new List<OverlayItem>();

            myoverlays.Add(myoverlayPoint);

            var myItemIconOverlays = new Osmdroid.Views.Overlay.
                ItemizedIconOverlay(this, myoverlays, null);
            mapview.Overlays.Add(myItemIconOverlays);
            ScaleBarOverlay myScaleBarOverlay = new ScaleBarOverlay(this);
            mapview.Overlays.Add(myScaleBarOverlay);
            //called class when Run Touch In Map
            this.mmapOverlay = new MapOverlay(this);
            mapview.Overlays.Add(mmapOverlay);

        }

    }
Ebrahim
  • 11
  • 6
  • You are better to specify the error you get when you `touch` the map, – Nah Jul 29 '18 at 02:12
  • I Am InterFace OnItemGestureListener As Interface In C# implemented.But When Add Marker In Device Method onItemSingleTapUp That To Add Marker Not Working. Edit Question Coming Soon. Thanks – Ebrahim Jul 29 '18 at 15:26