ThinkGeo.com    |     Documentation    |     Premium Support

ExtentHelper.ToScreenCoordinate : ArgumentOutOfRangeException

Hi,


When I run this code, I get an exception :


      //FullMinimapExtent = new RectangleShape(471561, 305539, 858543, 51620);   //map.CurrentExtent.UpperLeftPoint.X = 638499.8956544206;

//map.CurrentExtent.UpperLeftPoint.Y = 216957.9726604209;  

//miniWidth = 200;     

//miniHeight = 132;    

ExtentHelper.ToScreenCoordinate(FullMinimapExtent, map.CurrentExtent.UpperLeftPoint.X, map.CurrentExtent.UpperLeftPoint.Y, miniWidth, miniHeight);            


The exception is :


'ExtentHelper.ToScreenCoordinate(FullMinimapExtent, map.CurrentExtent.UpperLeftPoint, miniWidth, miniHeight)' threw an exception of type 'System.ArgumentOutOfRangeException'

    base {System.ArgumentException}: {System.ArgumentOutOfRangeException: The input double value is out of range.

Parametername: worldX

   bei ThinkGeo.MapSuite.SilverlightCore.x6d719af406ea4c2c.x12e7df23649722cf(Double x86d4512e4c7d8814, String x34decc57f0820440, Double xaee3bf422e2fd725, x1acec04cd58c1af5 xa798986acdb65a29, Double xe21f77686f8b957e, x1acec04cd58c1af5 x495f4164830ffad5)

   bei ThinkGeo.MapSuite.SilverlightCore.ExtentHelper.ToScreenCoordinate(RectangleShape worldExtent, Double worldX, Double worldY, Double screenWidth, Double screenHeight)

   bei ThinkGeo.MapSuite.SilverlightCore.ExtentHelper.ToScreenCoordinate(RectangleShape worldExtent, PointShape worldPoint, Double screenWidth, Double screenHeight)}

    Message: "The input double value is out of range.\r\nParametername: worldX"


 


It is exaclty the same code as the one I used in the WPF client, with the same values.

Am I misundertunding something ?


Thanks,

Guillaume.



Guillaume,



Sorry for that, that's our issue. We have fixed this issue in the next public product release edition. Here is a workaround for you temporary.




        public static Point ToScreenCoordinate(RectangleShape worldExtent, double worldX, double worldY, double screenWidth, double screenHeight)
        {
            double widthFactor = screenWidth / worldExtent.Width;
            double heighFactor = screenHeight / worldExtent.Height;

            double pointX = (worldX - worldExtent.UpperLeftPoint.X) * widthFactor;
            double pointY = (worldExtent.UpperLeftPoint.Y - worldY) * heighFactor;

            return new Point(pointX, pointY);
        }


Thanks,


Johnny


 



Many thanks Johnny, this works perfectly. 
  
 Guillaume.

Guillaume, 
  
 Glad to see that you have solved this problem, if you still have any problem please let me know. 
  
 Thanks, 
  
 Khalil