ThinkGeo.com    |     Documentation    |     Premium Support

v10 Missing Classes

Hello,

We are updating to version 10, but there are a couple of classes that I cannot find:

ArcGISServerRestLayer

GraticuleAdornmentLayer

Thanks,
Dib

I’ve got a fix for the GraticuleAdornmentLayer, but I still need to find the ArcGISServerRestLayer

Hi Dib,

The ArcGISServerRestLayer is available on Nuget.org.

Now it is a beta version, next minor release we will upgrade it to official version.

Please following the screenshot below to get ArcGISServerRestLayer.

Here is a sample for ArcGISServerRestLayer, please refer https://github.com/thinkgeo/ArcGISServerRestLayerSample-ForWPF for detail.

If there is any question, please feel free to let us know.

Thanks,

Don,

Thanks, I’ve got that in place now.

One thing I am noticing now that we are on version 10: I am seeing this error often when the map refreshes:

Message “The input double value is out of range.\r\nParameter name: screenWidth”

The Actual Value of the parameter appears to be Null. I see this once we have added graphics to the screen, such as showing predicted rainfall (QPF) polygons. It is reproducible, though some items work ok when they are turned on.

We do use unmanaged projections in our project, which we have seen throw errors in the past, though I have never seen this one.

Here is the call stack for when the error fires off:

StackTrace "
at ThinkGeo.MapSuite.ValidatorHelper.CheckInputValueIsInRange(Double inputValue, String parameterName, Double minValue, RangeCheckingInclusion includeMinValue, Double maxValue, RangeCheckingInclusion includeMaxValue, String exceptionMessage)\r\n
at ThinkGeo.MapSuite.ValidatorHelper.CheckInputValueIsInRange(Double inputValue, String parameterName, Double minValue, RangeCheckingInclusion includeMinValue, Double maxValue, RangeCheckingInclusion includeMaxValue)\r\n
at ThinkGeo.MapSuite.ValidatorHelper.CheckInputValueIsLargerThan(Double inputValue, String parameterName, Double minValue, RangeCheckingInclusion includeMinValue)\r\n
at ThinkGeo.MapSuite.Shapes.ExtentHelper.ToScreenCoordinate(RectangleShape worldExtent, PointShape worldPoint, Single screenWidth, Single screenHeight)\r\n
at ThinkGeo.MapSuite.Layers.TileCache.kiU=(GeoImage sourceImage, RectangleShape sourceImageExtent, RectangleShape tileExtent, Int32 tileImageWidth, Int32 tileImageHeight)\r\n
at ThinkGeo.MapSuite.Layers.TileCache.SaveTiles(GeoImage image, RectangleShape imageExtent, Boolean saveContainedCellsOnly)\r\n
at ThinkGeo.MapSuite.Layers.TileCache.SaveTiles(GeoImage image, RectangleShape imageExtent)\r\n
at ThinkGeo.MapSuite.WinForms.Overlay./FI=(GeoCanvas canvas)\r\n at ThinkGeo.MapSuite.WinForms.Overlay.Draw(GeoCanvas canvas)\r\n
at ThinkGeo.MapSuite.WinForms.WinformsMap.sVI=(IEnumerable1 drawingOverlays, RectangleShape extent)\r\n at ThinkGeo.MapSuite.WinForms.WinformsMap.sFI=(RectangleShape drawingExtent, RectangleShape extent)\r\n at ThinkGeo.MapSuite.WinForms.WinformsMap.1VI=(RectangleShape extent, Overlay overlay, Int32 width, Int32 height, GeographyUnit geographyUnit)\r\n at ThinkGeo.MapSuite.WinForms.WinformsMap.2FI=(IEnumerable1 drawingOverlays)\r\n at ThinkGeo.MapSuite.WinForms.WinformsMap.z1I=(RectangleShape extent)\r\n
at ThinkGeo.MapSuite.WinForms.WinformsMap.gRU=(Int32 delayInterval, RectangleShape extent)\r\n at ThinkGeo.MapSuite.WinForms.WinformsMap.yFI=(InteractionArguments interactionArguments)\r\n
at ThinkGeo.MapSuite.WinForms.WinformsMap.vVI=(Object sender, 7lI= e)\r\n at ThinkGeo.MapSuite.WinForms.MouseEventAnalyzer.OnMouseEvent(7lI= e)\r\n at ThinkGeo.MapSuite.WinForms.MouseEventAnalyzer.61I=(Double screenX, Double screenY, Double worldX, Double worldY, MapMouseButton mouseButton)\r\n
at ThinkGeo.MapSuite.WinForms.WinformsMap.x1I=(Object sender, MouseEventArgs e)\r\n at System.Windows.Forms.MouseEventHandler.Invoke(Object sender, MouseEventArgs e)\r\n
at System.Windows.Forms.Control.OnMouseUp(MouseEventArgs e)\r\n at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)\r\n
at System.Windows.Forms.Control.WndProc(Message& m)\r\n at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\r\n
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)\r\n
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)\r\n
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)\r\n at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)\r\n
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()\r\n at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()\r\n
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)\r\n
at Hurrevac2010.My.MyApplication.Main(String[] Args) in :line 81" string

Hi Don,

Thanks for let us know your question, but it looks we cannot recreated your exception.

I guess that’s maybe related with the data your are using, here we have a topic shows how to create a simple project based on the project template: http://wiki.thinkgeo.com/wiki/map_suite_project_template_guide, could you please build a sample project based on that and make sure it can reproduce your exception, so our developer can work based on that?

Thanks,

Don,

I’ve tracked this problem down to something with caching. All of the layers that were throwing the error had their TileCache value set. The line of code I use to do this is:

overlayLayer.TileCache = New FileBitmapTileCache(CurrentUserFolders.MapTileCache, layerName)

Once I commented out the code to cache they layers, they showed up as expected.

Don, an additional issue we are seeing:

I’ve created a .MSI for our project. When I run it, both on my development machine, and other machines, we are getting an error:

The type initializer for ‘qxw=.C1l=’ threw an exception.

It looks like this error happens when I try to open an UnmanagedProj4Projection. The error occurs on this line:

Me._unProj.Open()

_unProj is definded as:

Private _unProj As New UnmanagedProj4Projection(4326, 3857)

and this line immediately precedes the open call:

Me._unProj.DecimalDegreeBoundary = New RectangleShape(-359.9, 90, 359.9, -90)

I know this is still in beta.

Hi Dib,

Thanks for your information.

Please check the list below:

  1. The TileCache issue has been fixed on our latest nuget package. Please get MapSuiteDesktopForWinForms-BareBone 11.0.0-beta004 from nuget and have a try.

  2. If you need to package UnmanagedProj4Projection to your msi, we need also package the unmanaged assmeblies which should in your output directory named Windows-X64/Windows-X86. Do you meet this issue in your project, if yes, could you please provide us a sample? We can help you to figure out this issue.

If there is any question, please feel free to let me know.

Thanks,

Don,

Do you mean the DLL files from the ThinkGeo.MapSuite.Shapes.UnmanagedProj4Projection.11.0.0-beta001 package, or the ones from the MapSuiteDependency-UnmanagedProj4Projection.11.0.0-beta002 package? I added the ones from the Shapes package, but the result was the same. If I need the ones from the MapSuiteDependency package, I guess I need to put them in their own folders, and the file names (gadl19.dll, proj.dll) are the same for 64 and 86.

Hi Dib,

The MapSuiteDependency packages contains Windows-X64 and Windows-X86 folders, both of them contains some dll files. You also can find them in project output directory.

If you want to pack these files into your msi file, please keep its file structure, we suggest you directly copy the two folders without change.

If there is any question, please feel free to contact us.

Thanks,

Don,

Looks like I’ve got it working, with all the correct DLLs in the right places. Thanks

Hi Dib,

I am glad to hear that works.

Thanks,