ThinkGeo.com    |     Documentation    |     Premium Support

9.0.49.0 NorthArrowAdornmentLayer

Hi



I have a problem with the NorthArrowAdornmentLayer.


Nord = new NorthArrowAdornmentLayer();
Nord.Location= AdornmentLocation.UpperLeft;
GeoImage geoImage = new GeoImage();
geoImage.NativeImage=BitmapFactory.DecodeResource(Resources, Resource.Drawable.Nord);
Nord.Gimg = geoImage;
Nord.RotateAngle = 0;
 
adornmentOverlay = new AdornmentOverlay();
adornmentOverlay.Layers.Add(Scalebar);
adornmentOverlay.Layers.Add(Nord);

There is an error

Caused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object

No problem with only the ScaleBar

I have tested without geoimage, also error.

Regards

Laurent M

Hi Laurent,



Looks like we don’t supply the NorthArrowAdornmentLayer class in Android Edition, is it customized by yourself? would you please attached the source code on how to define the NorthArrowAdornmentLayer?



Thanks,



Troy

Hi

I try to transform the Source_Code_ServicesEditionSample_NorthArrow_CS_090730 Desktop edition for Android.

Do you a sample for Android ?



Thannk you

Laurent M

Hi

I found my problem.

My class is very simple

My problem was about the geoimage. The geoimage is now a .png in my sdcard with the data.

I was an error, because i tried to use an resource image.


public class NorthArrowAdornmentLayer : AdornmentLayer
    {
        public float RotateAngle { get; set; }
        public GeoImage Gimg { get; set; }
 
        public NorthArrowAdornmentLayer(){
//            this.RotateAngle = 0;
//            this.Gimg = new GeoImage();
        }
        protected override void DrawCore(GeoCanvas canvas, System.Collections.ObjectModel.Collection<SimpleCandidate> labelsInAllLayers)
        {
            if (Gimg != null)
            {
                try
                {
                    //RotateAngle = 0;
                    canvas.DrawScreenImageWithoutScaling(Gimg, 50, 50, DrawingLevel.LevelTwo, 0, 0, RotateAngle);
                }
                catch (Exception e){
                    Console.WriteLine(e.Message);
                }
 
            }
        }
    }
 // in my map activity
    Nord = new NorthArrowAdornmentLayer();
    string MapOsmDirectory = pathdataAppli + "/Osm";
    GeoImage geoImage = new GeoImage(System.IO.Path.Combine(MapOsmDirectory, "vehicle2.png"));
     Nord.Gimg = geoImage;
    Nord.RotateAngle = 45;

           adornmentOverlay = new AdornmentOverlay();

            adornmentOverlay.Layers.Add(graticuleAdornmentLayer);

            adornmentOverlay.Layers.Add(Scalebar);

            adornmentOverlay.Layers.Add(Nord);



Hi Maumet,



Great to hear you figure it out.



For the Android sample, you can find all the Android samples at wiki.thinkgeo.com/wiki/Map_S…ng_Samples, and a lot of other samples will be added as time goes on.



Thanks,

Troy