【问题标题】:Xamarin Forms: Android - No suitable method found to override OnElementChanged()Xamarin Forms: Android - 找不到合适的方法来覆盖 OnElementChanged()
【发布时间】:2017-07-17 03:37:35
【问题描述】:

我正在编写一个 Xamarin Forms 应用程序,它在地图上显示纬度/经度坐标的多边形。我正在通过this Xamarin 教程为地图上的多边形叠加添加自定义渲染器。

我在我的 Android 项目中创建了一个名为 CustomMapRenderer.cs 的类,它继承自 Android 的 MapRenderer 类。在这个类中,我试图覆盖OnElementChanged 方法,但我遇到了错误

1) CustomMapRenderer.OnElementChanged(ElementChangedEventArgs<View>)': no suitable method found to override

2) Argument 1: cannot convert from 'Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.View> to 'Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Maps.Map>

我很困惑,因为这段代码没有从上面链接的教程中修改。

这是我的代码:

using Android.Gms.Maps;
using MapOverlay.Droid;
using SafeAgSystems.Models;
using System.Collections.Generic;
using Xamarin.Forms;
using Xamarin.Forms.Maps;
using Xamarin.Forms.Maps.Android;

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]
namespace MapOverlay.Droid
{ 
public class CustomMapRenderer : MapRenderer, IOnMapReadyCallback
  {
    GoogleMap map;
    List<Position> shapeCoordinates;

    protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<View> e) //Error 1
    {
        base.OnElementChanged(e); //Error2

        if (e.OldElement != null)
        {
            // Unsubscribe
        }

        if (e.NewElement != null)
        {
            var formsMap = (CustomMap)e.NewElement;
            shapeCoordinates = formsMap.ShapeCoordinates;

            ((MapView)Control).GetMapAsync(this);
        }
    }

  }
}

【问题讨论】:

    标签: c# android google-maps xamarin.android xamarin.forms


    【解决方案1】:

    既然你继承自 MapRenderer,你应该重写的方法是

    protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e)
    

    【讨论】:

    • 这有助于使地图在 Xamarin.Droid 上可见,但我注意到从 PCL 中的 Forms 地图传递的任何配置,例如 map.MoveToRegion... 似乎都被忽略了,但事实并非如此Xamarin.iOS 中的案例。对此有何见解?
    • 此主题讨论了该问题并提供了解决方法:forums.xamarin.com/discussion/92565/…
    猜你喜欢
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多