C# Xamarin表单:Android-未找到覆盖OnElementChanged()的合适方法
我正在编写一个Xamarin表单应用程序,它在地图上显示纬度/经度坐标的多边形。我正在学习Xamarin教程,为地图上的多边形覆盖添加自定义渲染器 我在Android项目中创建了一个名为C# Xamarin表单:Android-未找到覆盖OnElementChanged()的合适方法,c#,android,google-maps,xamarin.android,xamarin.forms,C#,Android,Google Maps,Xamarin.android,Xamarin.forms,我正在编写一个Xamarin表单应用程序,它在地图上显示纬度/经度坐标的多边形。我正在学习Xamarin教程,为地图上的多边形覆盖添加自定义渲染器 我在Android项目中创建了一个名为custommaprederer.cs的类,它源自Android的maprederer类。在这个类中,我试图重写OnElementChanged方法,但遇到了一个错误 1)CustomMapRenderer.OnElementChanged(ElementChangedEventArgs)':找不到合适的方法来覆
custommaprederer.cs
的类,它源自Android的maprederer
类。在这个类中,我试图重写OnElementChanged
方法,但遇到了一个错误
1)CustomMapRenderer.OnElementChanged(ElementChangedEventArgs)':找不到合适的方法来覆盖
2)参数1:无法从'Xamarin.Forms.Platform.Android.ElementChangedEventArgs'转换为'Xamarin.Forms.Platform.Android.ElementChangedEventArgs
我很困惑,因为这段代码没有从上面链接的教程中修改
这是我的密码:
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);
}
}
}
}
使用Android.Gms.Maps;
使用MapOverlay.Droid;
使用安全系统。模型;
使用System.Collections.Generic;
使用Xamarin.Forms;
使用Xamarin.Forms.Maps;
使用Xamarin.Forms.Maps.Android;
[程序集:ExportRenderer(typeof(CustomMap)、typeof(CustomMapRenderer))]
名称空间MapOverlay.Droid
{
公共类CustomMapRenderer:MapRenderer,IOnMapReadyCallback
{
谷歌地图;
列出形状坐标;
受保护的覆盖void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs e)//错误1
{
base.OnElementChanged(e);//错误2
if(e.OldElement!=null)
{
//退订
}
if(例如NewElement!=null)
{
var formsMap=(CustomMap)e.NewElement;
形状坐标=formsMap.shapeCoordinates;
((MapView)控件).GetMapAsync(this);
}
}
}
}
由于您继承了应该重写的方法,因此
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e)
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs e)
这使映射在Xamarin.Droid上可见,但我注意到从PCL中的表单映射传递的任何配置,例如map.MoveToRegion。。。似乎被忽略了,但在Xamarin.iOS中并非如此。对此有何见解?此线程讨论此问题并提供解决方法: