ThinkGeo Cloud
ThinkGeo UI Controls
ThinkGeo Open Source
Help and Support
External Resources
ThinkGeo Cloud
ThinkGeo UI Controls
ThinkGeo Open Source
Help and Support
External Resources
The update to MapSuite 10.0 introduces a lot of exciting changes we have made to MapSuite. We have redesigned MapSuite from the core up to make it easier to get the features you need and add support for some platforms that we've not yet supported until now with MapSuite 10.0. This guide will walk you through all of the changes and how to upgrade from 9.0 to 10.0 for your existing project. You can see an overview of these changes in the table below.
MapSuite 9.0 | MapSuite 10.0 | Benefits | |
---|---|---|---|
Core Functionality Assembly | MapSuiteCore.dll | Split into many assemblies | Get the features you need |
Core Functionality API | The MapSuiteCore's API is different from the API in iOS/Android | Same across all the products | No need for multiple changes like before |
Core Functionality Platforms supported | Windows, iOS*, Android* | Windows, Linux*, MacOS*, iOS, Android | Now supporting Linux and macOS for the first time |
Distribution and updates | Through Map Suite Product Center | Through Nuget | Much simpler, streamlined ability to update and install |
Samples | Map Suite Wiki | Map Suite Wiki and Github | More ways to get to our samples |
Dependencies of some features (like MrSid/ECW) | in Windows\System32 | In bin folder | Easier to deploy with less restrictions |
Licensing Strategy | Saved in Registry | File Based. | Now works on the platforms without registry, like Amazon BeanStalk or Linux |
* - For iOS and Android through Xamarin. For Linux and macOS through Mono.
With the separation of Map Suite Core, some of the assemblies have now changed. MapSuite.Core.dll has been broken up into many assemblies so that you can access the features you need. See the table below for examples of these changes:
9.0 | 10.0 |
---|---|
ThinkGeo.MapSuite.Core.dll | ThinkGeo.MapSuite.Layers.ShapeFile.dll ThinkGeo.MapSuite.Layers.GoogleMaps.dll ThinkGeo.MapSuite.Styles.ClassBreak.dll ThinkGeo.MapSuite.Shapes.UnmanagedProj4Projection.dll ThinkGeo.MapSuite.Drawing.PdfGeoCanvas.dll ……. |
ThinkGeo.MapSuite.Desktop.dll | ThinkGeo.MapSuite.Winforms.dll |
In Map Suite 9.0 and previous versions, namespaces mainly consisted of two parts: ThinkGeo.MapSuite.Core and an edition namespace like ThinkGeo.MapSuite.WebEdition. Now, ThinkGeo.MapSuite.Core has been separated based on what its function is.
9.0 | 10.0 |
---|---|
ThinkGeo.MapSuite.Core | ThinkGeo.MapSuite contains common and basic classes for building Map Suite applications like GeographyUnit, GeoCollection, etc. ThinkGeo.MapSuite.Drawing contains drawing-related classes likes GeoImage, GeoSolidBrush, etc ThinkGeo.MapSuite.Layers contains some base classes like Layer, FeatureLayer, etc. ThinkGeo.MapSuite.Shapes contains geometry-related classes likes PlygonShape, LineShape, etc. ThinkGeo.MapSuite.Styles contains classes used for building map styles like AreaStyle, LineStyle, etc. ……. |
ThinkGeo.MapSuite.Desktop | ThinkGeo.MapSuite.Winforms |
One big thing we decided to do is separate our Map Suite Core by functionality, such as shapes, layers, styles, symbologies, etc. There is still a low-level assembly that will be relied on by the other features. Some features have been changed to accommodate cross-platform support.
For example:
// 9.0: public ShapeFileFeatureLayer(String shapePathFilename, ShapeFileReadWriteMode readWriteMode); // 10.0: public ShapeFileFeatureLayer(String shapePathFilename, GeoFileReadWriteMode readWriteMode);
// 9.0: public TiledWmsLayer(IEnumerable<Uri> serverUris, WebProxy webProxy); // 10.0: public TiledWmsLayer(IEnumerable<Uri> serverUris, IWebProxy webProxy);
The changes here to the GeoFileMode and GeoFileReadWriteModereadWriteMode features are made to accommodate multi-platform use.
By splitting MapSuiteCore 9.0 assemblies by functionality, it is easy to import necessary assemblies to projects. Map Suite Products are hosted on NuGet servers instead of the Map Suite installer. Movement of the required assemblies to a specific package makes it easier to deploy.
With this switch from system32 to the bin folder of the project, it becomes much easier to deploy your project on the target machine(s) as there is no need to install to the registry.
Nuget packages do not support Authentication and Licensing by default so we created a new strategy for non-registered developers to have a chance to evaluate Map Suite Products without registration in a limited period. All you have to do is open Visual Studio, create a project, open NuGet manager and type “MapSuite.” It returns to you the full function list that Map Suite supports.
With the license being stored in the bin folder, rather than in the registry, a project can now run on platforms that do not allow access to the registry such as Linus or Amazon Beanstalk.
Using the Desktop for WinForms Hello World quickstart sample, here is a guide to upgrading to Map Suite 10.0:
Please remove the old assemblies from the project.
In order to add the new packages, you must first update the project's properties to use .NetFramework4.5.
It will generate a pop-up confirmation and you will need to click yes.
Next, the new packages will need to be installed. Search for MapSuiteDesktopForWinforms in the NuGet Package Manager and install the standard version. Please click OK to accept changes and then accept the license agreements.
If you want to get more information, please refer to the NuGet installation guide.
Currently, the project still cannot build successfully as namespaces have changed in Map Suite 10.0. Some classes are marked with a red underline meaning this class is not found in all namespaces listed at the top of this file.
Right-Click on a class with a red underline and select Quick Actions and Refactorings.
Select the first item in the popup and the missing namespaces will add to the current file automatically.
You will also need to manually change some of the classes to fit the new Map Suite 10.0 locations of the namespaces. The commented code is the previous code with the corrected code underneath. See the image below for reference:
90% of the API stays the same so that people won’t need to make any code changes. There might be some API changes for the remaining 10%, please check this change log for details.
Here are answers to some of the most common questions that we are asked about the MapSuite 10.0 upgrading. If you still have questions after reading these, feel free to post them our discussion forum. Our forums are monitored by our development staff in order to provide detailed and technical answers when you need them.
There is no MapEngine any more, there are two options for you:
If you want to know how to implement your feature with MapSuite 10.0, please refer the samples in GitHub
The new name is GdiPlusGeoCanvas now is something like PlatformGeoCanvas, GdiPlusRasterLayer now is NativeImageRasterLayer on Windows.
The OsmWorldMapKitLayer hadn't been supported in version 10.
If you want to use WorldMapKit as background layer, please just choose WorldStreetsAndImageryOverlay instead of it.
If you want to render the Sqlite database like original OsmWorldMapKitLayer, please just view this sample https://github.com/ThinkGeo/WorldStreetsLayerSDKOnLinux-ForWinForms.
Upgrading to V10 is recommended, but if you want to use version 9 with WorldMapKitLayer, please view attached sample, you can double check the executable in bin folder and run directly, replace corresponding assembly to the project and it will works well. WorldMapKitTest.zip
We have a breaking change page, please refer products wiki page for API change log.
We can already see the benefit of using the new Map Suite NuGet packages. You can do everything from within Visual Studio via the console or GUI, and you can check for component updates in real-time. You could easily setup your own NuGet server for your team and share your project.
For a complete Map Suite 10.0 API list, please check here.