2

OsmDroid (3.0.9-SNAPSHOT: http://code.google.com/p/osmdroid/source/browse/ ) からトランク バージョンを移植しようとしています。以前は、バージョン 3.0.8 の xamarin の例からの移植を使用していました。バージョン 3.0.9 では、私が直面しているバグが解決されたため、OsmDroid のトランク バージョンを移植する必要があります。

現在、次の 3 つのエラーが発生しています。

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)

私が見つけた限りでは、これらの 3 つの欠けているインターフェイス メンバーは Android.Canvas のメンバーです。これら 3 つのメソッドは、移植可能なコードの生成後に移植されませんが、元の jar ファイル ( SafeTranslatedCanvas.javaおよびISafeCanvas.java ) に表示されます。

Metadata.xml でこれらの問題を解決するにはどうすればよいですか?

前もって感謝します。こんにちは、ファイコ

4

2 に答える 2

1

部分クラスを追加することで、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);
        }
    }
}

また、可視性に関連するさらに 2 つのエラーを解決する必要がありました。

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>

プロジェクトが起動し、マップが表示されるようになりましたが、応答しません。スケーリングもスクロールもしません。あなたも同じ結果になるのかしら。

于 2013-05-17T13:00:54.613 に答える
0

OsmDroid のサンプルを含むXamarin サンプル リポジトリを見たことがありますか?

于 2013-01-16T18:08:09.347 に答える