【问题标题】:Xamarin Android - Set Marker on Touch in "OpenStreetMap for Android (osmdroid)"Xamarin Android - 在“OpenStreetMap for Android (osmdroid)”中设置触摸标记
【发布时间】:2018-07-28 17:31:18
【问题描述】:

我正在使用这个库: https://github.com/osmdroid/osmdroid

我正在尝试将touch 事件上的标记添加到我的 MapView(OSMDroid),但未能成功。

我尝试使用此指南,但没有成功: http://android-er.blogspot.com/2012/05/implement-onitemgesturelistener-on.html

示例代码如下:

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;

  }

我正在尝试用 C# 编写上面的代码,你可以看到它。但是当触摸屏设备方法 OnSingleTapConfirmed 在类 MapOverlay Called.Problem In Value MotionEvent 中添加标记。发布添加标记的错误。精度值 MotionEvent。请帮助几天解决所涉及的问题

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

        }

    }

【问题讨论】:

  • 您最好指定touch地图时遇到的错误,
  • 我是接口 OnItemGestureListener 作为 C# 中的接口实现。但是当在设备方法 onItemSingleTapUp 中添加标记时,添加标记不起作用。编辑问题即将推出。谢谢

标签: android xamarin xamarin.android marker osmdroid


【解决方案1】:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 2011-01-11
相关资源
最近更新 更多