Reputation: 111
I am trying to port the trunk version from OsmDroid (3.0.9-SNAPSHOT: http://code.google.com/p/osmdroid/source/browse/). Previously I used the porting from xamarin examples for version 3.0.8. In version 3.0.9 a bug is resolved, which I am facing, so I really have to port the trunk version of OsmDroid.
I am getting three errors at the moment:
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)
As far as I found out those three missing interface members are members of the Android.Canvas. These three methods are not ported after generation of the portable code, but are visible in the original jar File (SafeTranslatedCanvas.java and ISafeCanvas.java).
How do I solve these problems in the Metadata.xml?
Thanks in advance. greetings, faiko
Upvotes: 2
Views: 787
Reputation: 551
I've managed to get osmdroid 3.0.9 (& 3.0.10) to compile by adding a partial class:
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);
}
}
}
I also had to resolve two more errors connected with visibility:
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
This was solved by adding following lines to 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>
My project now launches and the map is visible however it is not responsive - it does not scale nor scroll. I wonder if you'll have the same outcome.
Upvotes: 1
Reputation: 24470
Have you seen the Xamarin Sample repository which contains a sample fro OsmDroid?
Upvotes: 0