Forms 如何使用自定义贴图渲染ios从点a拖动到点b时获取坐标

Forms 如何使用自定义贴图渲染ios从点a拖动到点b时获取坐标,forms,xamarin,maps,mkannotationview,Forms,Xamarin,Maps,Mkannotationview,我想将这个OBJC片段翻译成Xamarin表单自定义呈现,我的语法目前不起作用。它在销拖动过程中崩溃,没有任何错误 我现在拥有的是 protected override void OnElementChanged(ElementChangedEventArgs<View> e) { base.OnElementChanged(e); if (e.OldElement != null) {

我想将这个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);


         }
      }

protected override void OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(e.OldElement!=null)
{
var nativeMap=作为MKMapView的控件;
nativeMap.ChangedDragState-=OnDragState;
}
if(例如NewElement!=null)
{
var formsMap=(CustomMap)e.NewElement;
var nativeMap=作为MKMapView的控件;
nativeMap.ChangedDragState+=OnDragState;
}
}
私有状态(对象发送方,MKMapViewDragStateEventArgs e)
{
var NewState=e.NewState;
var OldState=e.OldState;
var ShowAnnotation=e.AnnotationView;
如果(OldState==MKAnnotationViewDragState.Draging)
{
}
如果(NewState==MKAnnotationViewDragState.Ending)
{
CLLocationCoordinate2D pinAt=ShowAnnotation.Annotation.Coordinate;
var droppedLoc=新的CLLocation(pinAt.纬度,pinAt.经度);
地理编码定位(droppedLoc);
}
}

基于您显示的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);
    }
}

注意:您尚未显示
geocodeLocation
\u addressAnnotation
的ObjC,因此您还需要翻译这些…

1)即ObjC,而不是Swift 2)您是否已经在其他地方翻译了
geocodeLocation
\u addressAnnotation
了?没有翻译的是,谢谢您的回复!我做了编辑。请查收。我试过你的方法,但没有成功work@Pxaml
…但它不起作用…
什么不起作用?我想是语法没有找到合适的方法-@Pxaml,正如我之前问的,并在我的问题末尾指出:
“您没有显示用于地理编码定位和_addressAnnotation的ObjC,所以您还需要翻译它们…”
你能看看这个帖子吗@Sushi