Как получить координаты при перетаскивании булавки из точки a в b с помощью пользовательской карты рендеринга IOS - PullRequest
0 голосов
/ 17 апреля 2019

Я хотел бы перевести этот фрагмент OBJC в пользовательский рендер форм Xamarin, мой синтаксис в настоящее время не работает. Сбой во время процесса перетаскивания без ошибок.

что у меня сейчас есть

protected override void OnElementChanged(ElementChangedEventArgs<View> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null)
            {
                var nativeMap = Control as MKMapView;
                nativeMap.ChangedDragState-= OnDragState;

            }

            if (e.NewElement != null)
            {
                var formsMap = (CustomMap)e.NewElement;
                var nativeMap = Control as MKMapView;
                nativeMap.ChangedDragState+= OnDragState;

            }
        }

        private void OnDragState(object sender, MKMapViewDragStateEventArgs e)
        {
         var NewState = e.NewState;
         var OldState=e.OldState;
         var ShowAnnotation=e.AnnotationView;

         if (OldState==MKAnnotationViewDragState.Dragging) 
         {
         }
         if (NewState == MKAnnotationViewDragState.Ending)
            {
              CLLocationCoordinate2D pinAt = ShowAnnotation.Annotation.Coordinate;
              var droppedLoc = new CLLocation(pinAt.Latitude, pinAt.Longitude);
              geocodeLocation(droppedLoc);


         }
      }

1 Ответ

1 голос
/ 17 апреля 2019

Исходя из показанного вами объекта ObjC:

public override void ChangedDragState(MKMapView mapView, MKAnnotationView annotationView, MKAnnotationViewDragState newState, MKAnnotationViewDragState oldState)
{
    if (oldState == MKAnnotationViewDragState.Dragging)
    {

    }
    if (newState == MKAnnotationViewDragState.Ending)
    {
        var pindropped = annotationView.Annotation.Coordinate;
        var droppedLoc = new CLLocation(pindropped.Latitude, pindropped.Longitude);
        geocodeLocation(droppedLoc);
        mapView.AddAnnotation(_addressAnnotation);
    }
}

Примечание. Вы не отображали объект ObjC для geocodeLocation и _addressAnnotation, поэтому вам потребуется также перевести его ...

...