Mono 单机器人Jar与OsmDroid的绑定问题

Mono 单机器人Jar与OsmDroid的绑定问题,mono,xamarin.android,porting,osmdroid,Mono,Xamarin.android,Porting,Osmdroid,我正在尝试从OsmDroid(3.0.9-SNAPSHOT:)移植中继版本。之前,我在版本3.0.8中使用了xamarin示例的移植。在版本3.0.9中,我面临的一个bug得到了解决,因此我必须移植OsmDroid的主干版本 目前我有三个错误: Error CS0535: 'OsmDroid.Views.SafeCanvas.SafeTranslatedCanvas' does not implement interface member 'OsmDroid.Views.SafeCanvas.I

我正在尝试从OsmDroid(3.0.9-SNAPSHOT:)移植中继版本。之前,我在版本3.0.8中使用了xamarin示例的移植。在版本3.0.9中,我面临的一个bug得到了解决,因此我必须移植OsmDroid的主干版本

目前我有三个错误:

Error CS0535: 'OsmDroid.Views.SafeCanvas.SafeTranslatedCanvas' does not implement interface member 'OsmDroid.Views.SafeCanvas.ISafeCanvas.DrawColor(int)' (CS0535) (OsmDroid)
Error CS0535: 'OsmDroid.Views.SafeCanvas.SafeTranslatedCanvas' does not implement interface member 'OsmDroid.Views.SafeCanvas.ISafeCanvas.DrawColor(int, Android.Graphics.PorterDuff.Mode)' (CS0535) (OsmDroid)
Error CS0535: 'OsmDroid.Views.SafeCanvas.SafeTranslatedCanvas' does not implement interface member 'OsmDroid.Views.SafeCanvas.ISafeCanvas.Save(int)' (CS0535) (OsmDroid)
据我所知,这三个缺失的接口成员是Android.Canvas的成员。这三种方法在生成可移植代码后不进行移植,而是在原始jar文件(和)中可见

如何在Metadata.xml中解决这些问题

提前谢谢。 问候语,
faiko

您见过包含OsmDroid示例的吗?

我通过添加一个分部类,成功地使OsmDroid 3.0.9(&3.0.10)进行编译:

using Android.Graphics;

namespace Org.Osmdroid.Views.Safecanvas
{
    partial class SafeTranslatedCanvas
    {
        public void DrawColor(int color)
        {
            this.WrappedCanvas.DrawColor(new Color(color));
        }

        public void DrawColor(int color, Android.Graphics.PorterDuff.Mode mode)
        {
            this.WrappedCanvas.DrawColor(new Color(color), mode);
        }

        public int Save(int SaveFlags)
        {
            return this.WrappedCanvas.Save((Android.Graphics.SaveFlags)SaveFlags);
        }
    }
}
我还必须解决另外两个与可见性相关的错误:

Error   30  'OsmDroid.Views.Overlay.SafeDrawOverlay.Draw(Android.Graphics.Canvas, OsmDroid.Views.MapView, bool)': cannot change access modifiers when overriding 'public' inherited member 'OsmDroid.Views.Overlay.Overlay.Draw(Android.Graphics.Canvas, OsmDroid.Views.MapView, bool)' C:\Users\K\Desktop\LodzKieruje\LodzKieruje\OsmDroidBinding\obj\Debug\generated\src\OsmDroid.Views.Overlay.SafeDrawOverlay.cs    111 27  OsmDroid
Error   34  'OsmDroid.Views.Overlay.ScaleBarOverlay.DrawSafe(Org.Osmdroid.Views.Safecanvas.ISafeCanvas, OsmDroid.Views.MapView, bool)': cannot change access modifiers when overriding 'protected' inherited member 'OsmDroid.Views.Overlay.SafeDrawOverlay.DrawSafe(Org.Osmdroid.Views.Safecanvas.ISafeCanvas, OsmDroid.Views.MapView, bool)'  C:\Users\K\Desktop\LodzKieruje\LodzKieruje\OsmDroidBinding\obj\Debug\generated\src\OsmDroid.Views.Overlay.ScaleBarOverlay.cs    388 24  OsmDroid
通过在Metadata.xml中添加以下行解决了这个问题

  <attr path="/api/package[@name='org.osmdroid.views.overlay']/class[@name='SafeDrawOverlay']/method[@name='draw']" name="visibility">public</attr>
  <attr path="/api/package[@name='org.osmdroid.views.overlay']/class[@name='ScaleBarOverlay']/method[@name='drawSafe']" name="visibility">protected</attr>
公共
受保护的

我的项目现在启动,地图可见,但它没有响应-它不缩放也不滚动。我想知道您是否会有同样的结果。

在我写的时候,我使用了这个例子来使用osmdroid 3.0.8,并成功地绑定了osmdroid奖励包以实现路由功能。但是我需要新版本的osmdroid,并且在体系结构中有一些新的类和优化。我“只是”有一个问题,从Android.Canvas使用的方法没有映射,尽管我得到了上面提到的三个错误。你已经解决了这个问题吗?