Skip to content


Major changes for ThinkGeo 14.0

Release date: 5/1/2024

ThinkGeo.Core Namespace:

  • Added OGC Features API Support
  • Added WFS V2 Support

Major changes for ThinkGeo 13.3

Release date: 4/16/2024

ThinkGeo.Core Namespace:

  • Fixed the issue that NoaaWeatherStationFeatureLayer not working
  • Fixed the issue that NoaaWeatherWarningsFeatureLayer not working
  • Fixed the issue that map border discrepancies when isGrayScale is set to true on MapPrinterLayer.
  • Fixed the alignment issues in LabelPrinterLayer when printing to PDF.
  • Enhanced LayerAsync by adding CancellationToken to OpenAsync() and CloseAsync() methods in AsyncLayer.
  • Enhanced RasterTileCache by support saving and retrieving tiles asynchronously.
  • Enhanced Docker compatibility by removing C++ redistributable installation from ThinkGeo.Core.
  • Enhanced Performance of ColorTransformation for large image layers. Added KML support through GDAL on Linux platforms.

ThinkGeo.UI.WPF Namespace / ThinkGeo.UI.WinForms Namespace:

  • Enhanced Multi-touch functionality in WPF applications.
  • Enhanced: removed gaps when displying points with offsets in multi-tile mode
  • Added MapViewStretchMode to better control the responsiveness and visual clarity.

Major changes for ThinkGeo 13.2

Release date: 11/29/2023

ThinkGeo.Core Namespace:

  • Added the following classes with asynchronous data fetching to ThinkGeo.Core.Async namespace:

    • ArcGisServerRestLayer
    • BingMapsLayer
    • CloudMapClient
    • GoogleMapsLayer
    • HereMapsRasterTileLayer
    • LayerAsync
    • MapBoxStaticTilesLayer
    • OpenStreetMapLayer
    • RasterLayerAsync
    • RasterSourceAsync
    • ThinkGeoCloudRasterMapsLayer
    • ThinkGeoCloudVectorMapsLayer
    • WebBasedLayer
    • WmsRasterLayer
    • WmsRasterSource
    • WmtsLayer
    • XYZTileLayer
  • Upgraded the ThinkGeo.CAD dependencies to the latest version as of November 2023 (ODA 24.9).

  • Fixed the issue where a layer is not showed up correctly when setting a custom style to the DefaultStyle instead of adding it to the CustomStyles collection
  • Enhanced WmsLayer functionality with new helper methods and better server compatibility.

ThinkGeo.UI.WPF Namespace / ThinkGeo.UI.WinForms Namespace:

  • Integrated async overloads for most methods to enhance UI responsiveness, and updated HowDoI samples to reflect these changes.
  • Upgrade all the WebBasedOverlays to internally use the new WebBasedLayers with asynchronous data fetching.
  • Improved exception management using Overlay.DrawingExceptionMode property and Overlay.ThrowingException event.
  • Addressed the issue of incorrect feature wrapping with wrapDateLine enabled.
  • Fixed the issue where map doesn't resize smoothly when SnappingMode is set to null.
  • Enhanced TrackZoomIn animation accuracy for maps with a non-zero rotation angle.

Major changes for ThinkGeo 13.1

Release date: 7/7/2023

ThinkGeo.Core Namespace:

  • Optimized performance for layers at lower zoomlevels.
  • Enhanced the performance of NoaaWeatherStationsLayer and NoaaWeatherWarningsLayer.
  • Implemented AsyncLocker, replacing lock() internally wherever possible.
  • Added support for V2 and X2 to ThinkGeoCloudRasterMapsLayer. Note: V2 represents the 2nd version, and X2 signifies High DPI.
  • Added PositionStyle.AllowLabelNudging to permit label nudging.
  • Introduced FeatureSource to GridDefinition to leverage featureSource's spatial index during InterpolationModel calculations.
  • Fixed an issue causing GeoTiff to produce a vertical white line at certain zoom levels.
  • Fixed an issue where some WKTs failed to function properly with French system culture.

ThinkGeo.UI.WPF Namespace / ThinkGeo.UI.WinForms Namespace:

  • Resolved an issue where WrapDateLine didn't function correctly when mapView.ZoomLevelSnappingMode was set to None.
  • Improved the performance of TileType.PreloadDataMultiTile mode, and fixed a problem where TileType.PreloadDataMultiTile didn't work properly under some conditions.
  • Rectified an issue where LayerTileView didn't update when Layers of LayerOverlay changed.
  • Set the default Map Unit to meter to avoid the WPF Design Time error.
  • Fixed an issue with improper functioning of Resize|Drag on PrinterLayer.
  • Corrected a problem where the legend items on printed PDF were larger than those on the print preview.
  • Solved an issue causing ThinkGeoCloud Overlay Cache to not work or appear blurry if the screen is higher than standard DPI.
  • Added MeasureInteractiveOverlay.

Major changes for ThinkGeo 13.0

Release date: 11/29/2022

ThinkGeo.Core Namespace:

  • Improved the accuracy and performance of isolines.
  • Improved FileGeoDatabase performance and added more APIs using the latest FileGDB APIs(FileGDB_API_1.5.2) from ESRI.(Windows only)
  • Improved multiple columns labeling through TextStyle.TextContent
  • improved MagneticDeclinationAdornmentLayer by updating to the latest Geomagnetic Reference IGRF13 from:
  • Improved the heatmap styling by updating its color palette.
  • Supported the GeoTiff files with separate planes and multiple strips
  • Supported the MrSid files with more than four bands(Windows only)
  • Supported HereMapsRasterTileLayer
  • Supported deleting/adding/editing columns for TabFiles.
  • Supported GeoPdf through NuGet package ThinkGeo.GeoPdf(Windows only)
  • Supported KML through NuGet packages ThinkGeo.Kml(Windows only)
  • Supported the latest CAD format by referencing the latest ODA dependencies from ( (up to 2022)(Windows only)
  • Upgraded all the dependencies to the latest (up to 11/2022) and streamline the 3rd party dependency reference.
  • Updated the proj string of the SRIDs to the latest based on
  • Implemented an API to check if a license is activated: ThinkGeoProductLicense.GetCoreLicenseStatus()
  • Fixed the issue where a null numeric field in a shapefile returns bad results
  • Fixed the issue where internal exceptions are thrown when cached tiles are read/updated simultaneously.
  • Fixed the issue where the labeling of curved lines is not at the center in some scenarios.
  • Fixed the issue where some labels are cut in busy places like New York City in ThinkGeoCloudRasterLayer.

ThinkGeo.UI.WPF Namespace / ThinkGeo.UI.WinForms Namespace:

  • Support HereMapsRasterTileOverlay
  • Support MapView.GetSnapShot()
  • Support WrapDateLine for MarkerOverlay and XYZOverlay.
  • Improved the map responsiveness by reaffirming using async for all the IO-intensive APIs.
  • Fixed the issue where TileOverlay.Drawn event is raised before all the tiles are rendered.
  • Fixed the issue where Tileoverlay is not displayed when the current scale is less than 3.
  • Fixed the issue where the map turns blank when calling map.refresh() right after resizing the map.
  • Fixed the issue where markers do not work if they are initialized with Marker.Content.
  • Fixed the issue where Printing Raster Images are Offset and scaled improperly
  • Fixed the issue where the alignment/text wrap does not work in the legend
  • Fixed the issue where Map Flickering when calling CenterAt/ZoomTo
  • Fixed the issue where mouse zooming is not centering at the mouse when the map's rotation angle is not 0.
  • Fixed the issue where the legend's location/layout and feature size are not precise in some scenarios while printing

Major changes for ThinkGeo 12.3

Release date: 11/6/2020

ThinkGeo.Core Namespace:

  • Created ThinkGeo.UI.XamarinForms edition.
  • Created MapBox layer and support MapBox static tile.
  • Open web browser instead of Product Center when no license was found.
  • Minimum supported .NET Framework version now has been updated to 4.6.2 from 4.6.1.
  • Add an API to the WorldFile class to allow it to save a world file to disk.
  • Added the API to convert feature collection to GeoJSON.
  • Added TopologyValidator class for validating shapes.
  • Added XYZ layer as the base class of all the XYZ-based layers.
  • Greatly improved the performance of web-based layers, such as bingmaps layer, googlemaps layer and thinkgeo cloud layers.
  • Request for X2 Google images if needed in Google Layer.
  • Fixed the issue where application cannot work on both X86 and X64 systems when compiling with .NET Framework under AnyCPU, by upgrading the drawing engine to SkiaSharp 2.80.2.
  • Fixed the issue where Proj String and EPSG number cannot be read correctly when opening a layer.
  • Fixed the issue where printing doesn’t work properly on High DPI printer.
  • Fixed the issue where the transparent background of a geotiff was not displayed properly.
  • Fixed the issue where a geoimage cannot be serialize/deserialize properly.
  • Fixed the issue where CAD layer throw a KeyNotFound exception in certain situations.
  • Fixed an issue where the Red and Blue channels of a geoTiff are inverted on Linux, iOS and Android.
  • Fixed the issue where drawing text with rotation angle other than 0 has some unexpected offset when zooming in to the lowest zoomlevel.
  • Support raster projection for the web-based layers such as google maps, bing maps, ThinkGeo cloud maps and mapbox maps.

ThinkGeo.UI.WPF Namespace / ThinkGeo.UI.WinForms Namespace:

  • Fixed the issue where map flashes when multiple overlays are added to the map if one overlay draws way faster than the others.
  • Used async drawing and greatly improve the drawing performance.
  • support customized zoombar tooltips

Major changes for ThinkGeo 12.1

Release date: 11/29/2019

ThinkGeo.Core Namespace:

  • Enhanced to support high resolution screen for ThinkGeo Cloud Maps.
  • Enhanced to support high resolution screen for GoogleMapsLayer.
  • Enhanced to support projection for WMTS layer.
  • Fixed a bug where UnmanagedProjProjectionConverter converts extent to internal projection incorrectly.
  • Fixed the font size issue for PointStyle.
  • Fixed a bug where the WKB of MultiLine Empty can't parse.
  • Fixed a bug where ThinkGeo Cloud Vector layer aren't rendered at zoom level 19.
  • Fixed a bug where the alpha component of GeoColor style didn't work.
  • Fixed a bug where TextBaseline can't support multi-line text.
  • Enhanced to support cancel drawing line.
  • Fixed a bug where the GeoImage being used is disposed for Noaa layer.
  • Enhanced to support Cad.
  • Enhanced to support multi-thread for projection converter.
  • Fixed a bug where FeatureSource.GetColumns method throws exception in multi-threads.
  • Enhanced to make SqliteFeatureLayer thread safe.
  • Added DrawText method for PositionStyle.
  • Added "PointStyle(GeoFont glyphFont, string glyphContent, GeoBrush fillBrush)" constructor for PointStyle.
  • Published PointStyle.DrawGlyph method.
  • Enhanced to support custom font for PointStyle.
  • Changed the default tile size value of ZoomLevelSet from 256 to 512.
  • Published PointStyle.DrawImage method.
  • Published PointStyle.DrawSymbol method.
  • Fixed a bug where the ProjectionConverter.ConvertToExternalProjection method doesn't work.
  • Fixed a bug where SqliteFeatureSource querying data from R-Tree index table throws exception.
  • Fixed a bug where the SqliteFeatureSource.GetFeaturesByIds method doesn't work.
  • Changed longitude and latitude parameter order for some API.
  • Enhanced to support GeoLinearGradientBrush for Printer and fixed bug the Printer get different result with the Map if polygon contains inner rings.
  • Fixed a bug where the angle of label of GeoLinearGradientBrush is incorrect .
  • Fixed an bug where when parsing tile format tiff image, throws "Array index is out of range" exception.
  • Enhanced to support background for layer.
  • Enhanced to support KeyColors for SkiaGeoCanvas.
  • Changed the default web proxy from null to DefaultWebProxy of system.
  • Fixed a bug where rendering tiff image is blurred.

ThinkGeo.UI.Wpf Namespace:

  • Fixed a bug where LayerOverlay throws the exception when tile type is multiple tile.
  • Enhanced to support high resolution screen for ThinkGeo Cloud Maps.
  • Improved memory usage for Wpf.
  • Changed the zoom animation time form 200ms to 100ms.
  • Fixed a bug where ThinkGeocloudRasterMapsOverlay can't support to display map when custom zoom-level scale is smaller default min zoom-level scale.
  • Fixed a bug where there are white gaps between tiles.
  • Changed longitude and latitude parameter order for some API.
  • Changed the default web proxy from null to DefaultWebProxy of system.
  • Fixed a pinch zoom issue. When zoom in map, the target scale is smaller than expected.
  • Fixed a bug where "map.TrackOverlay", "map.AdornmentOverlay", etc. were all null after Map initialized.
  • Fixed a bug where InMemoryMarkerOverlay's marker can not display at first zoomlevel.

Major changes for ThinkGeo 12.0

  1. Merge all the managed layers to Core and used GDAL to redesign Unmanged Layers. Rename the packages name, here is latest package names:
    • ThinkGeo.UI.Wpf
    • ThinkGeo.UI.Blazor
    • ThinkGeo.UI.WebApi
    • ThinkGeo.Core
    • ThinkGeo.Gdal
    • ThinkGeo.Ecw
    • ThinkGeo.Cad
    • ThinkGeo.GeoTiff
    • ThinkGeo.Jpeg2000
    • ThinkGeo.MrSid
    • ThinkGeo.UmanagedProj
    • ThinkGeo.NuticalCharts
    • ThinkGeo.FileGeoDatabase
    • ThinkGeo.PersonalGeoDatabase
    • ThinkGeo.Oracle
    • ThinkGeo.Sqlite
    • ThinkGeo.MsSql
    • ThinkGeo.PostgreSql
    • ThinkGeo.Printers
    • ThinkGeo.Dependency.SQLite
    • ThinkGeo.Dependency.MicrosoftVisualCRunTime140
    • ThinkGeo.Dependency.NetTopologySuite
    • ThinkGeo.Dependency.Npgsql
    • ThinkGeo.Dependency.Printers
    • ThinkGeo.Dependency.SkiaSharp
    • ThinkGeo.Dependency.SqlClient
    • ThinkGeo.Dependency.Jint
    • ThinkGeo.Dependency.SQLite
    • ThinkGeo.Dependency.WriteableBitmapEx
  2. Redesign GeoCanvas based on SkiaSharp.
  3. Updated all the C++ runtime to one single version, use MSVC140.
  4. Use one GDAL C# wrap instead of raster layer wrappers, like JPEG2000, ECW, MrSid, Tiff, .etc.
  5. Removed FDO, and SDF layer.
  6. Renamed our all MapControl to MapView.
  7. Used GDAL for S57 and FileGeoDatabase and PersonalGeoDatabase, this will inherit from GDAL Feature Layer.
  8. MapSuite TileCache/Tile Matrix, based on current design, the TileView, TileCache, Tile, Matrix are thread safe. It will improve the performance greatly.
    • Matrix: Create/Calculate the matrix system for TileLayer and TileOverlay.
    • Tile: The tiles for the cached items, the tile contains the tile data and tile location (z,x,y)
    • TileCache: Tile Cache for ThinkGeo, it work with one tile.
    • TileView: TileOverlay each tile view, it only draw the layers or render the drawing result in UI.
  9. Refine our MapSuite properties, make sure set one property won’t change other properties, like Map.Unit will update the map extent, .etc.
  10. Support Rotation for WPF.
  11. Support StyleJson.