ThinkGeo.com    |     Documentation    |     Premium Support

Breaking changes

Hello,

I’m using 14.3.0-beta100 right now and wanted to try beta114.
There seem to be a lot of breaking changes. I found many moves from thinkgeo.core to thinkgeo.ui.wpf., but can you tell more about other breaking changes?

For instance, in my own class I inherit ThinkGeo.UI.Wpf.MapView now, but this line ‘Me.ZoomLevelSet.ZoomLevel02.Scale = Me.ZoomLevelSet.ZoomLevel02.Scale / ZoomlevelFactor’
crashes right now.

Me.ZoomLevelSnappingMode = ZoomLevelSnappingMode.SnapUp is obsolete now I understand, will this infect problems on my tilecache folder? Are still only the 20 standard zoomlevels cached?
I remember one time I used my touchscreen which did not snap to a standerd zoomlevel and ended up with many many tilecache folders for all the zoomlevels I ended up with zooming in/out with my touchscreen.

Maybe some direction on how to bugfix these breaking changes would be nice.

Regards,
Guido van den Boom

Hi Guido,

We’ve made several improvements in the latest beta versions. Let me explain the reasons behind these changes and the actions you might need to take:

  1. Namespace Consolidation
    We have moved all components in ThinkGeo.UI.Wpf into the ThinkGeo.UI.Wpf namespace (and similarly for ThinkGeo.UI.WinForms). This change better reflects our class hierarchies and improves long-term maintainability. Sorry about this breaking change, simply adding the following line to your code will resolve any issues: using ThinkGeo.UI.Wpf;

  2. MapView’s ZoomLevelSet vs TileOverlay’s ZoomLevelSet
    In addition to MapView’s ZoomLevelSet (which controls the zoom levels you can snap to), a TileOverlay now has its own ZoomLevelSet property for controlling its drawing and caching. These two zoom level sets can be different. For example, you can have an overlay with 30 zoom levels (resulting in a 30-level tile cache) while keeping the MapView at the default 20 zoom levels (so the zoom bar has 20 slots). This change also allows you to configure multiple overlays with different zoom level sets, which is useful when different overlays use backend servers with distinct scale setups.

  3. MapView Snapping Changes
    In connection with point #2, we’ve removed MapView snapping mode—which is why ZoomLevelSnappingMode.SnapUp is now obsolete. You can still double-click, scroll, or use the zoom bar to jump to the next zoom level, but the map now allows stopping at any scale. This improvement benefits touchscreen pinch/stretch gestures and enables smoother zoom animations. The issue you mentioned, where using a touchscreen led to the creation of numerous tile cache folders, has been completely resolved. Check out this YouTube video:ThinkGeo Desktop v14.3 on Touch Screen to see how it performs on a touchscreen.

  4. Enhanced XAML Support for MapView
    We have improved MapView integration in XAML. In some of the samples in dev branch’s HowDoI, we use data bindings and have added more map elements defined in XAML. For instance, the included blackhole sample shows overlays and layers fully defined in XAML. It’s a great demonstration of the new capabilities.


  1. Changes to CurrentExtent
    We are making the CurrentExtent property read-only. Users will now need to set CenterPoint and CurrentScale directly. This approach simplifies determining the map’s center and scale, rather than calculating the current extent. It also avoids confusion since CurrentExtent can change based on the canvas dimensions and may be ambiguous when the map is rotated.

Additional notes:

  • API Changes:
    The only API-breaking change is in point #1. The rest of the changes are marked as obsolete and will continue to work until they are eventually removed. The obsoletion messages provide guidance on the new alternative APIs.

  • Regarding Your ZoomLevelSet Issue:
    it is a bug that Me.ZoomLevelSet.ZoomLevel02.Scale = Me.ZoomLevelSet.ZoomLevel02.Scale / ZoomlevelFactor; does not work. it’s because the ZoomLevelSet only initializes after CurrentExtent or CurrentScale is set. We plan to fix this. In the meantime, you can work around it by reinitializing the ZoomLevelSet: Me.ZoomLevelSet = new ThinkGeoCloudMapsZoomLevelSet(); If your primary concern is the overlay’s ZoomLevelSet, you can set it directly on the overlay without worrying about MapView’s ZoomLevelSet, which will be initialized later.

We are actively working on it and Everything is still being improved. But let me know if you have any comments about the changes.

Thanks,
Ben

Thanks Ben,

This gives me a good direction where I can expect some problems in my current code.
To speed up user experience I use tilecaches a lot, so I hope that will function properly with these changes.
If not I will let you know.

Regards,
Guido van den Boom

Sounds good! Just let us know when you see any issues or have any suggestions.

Hi Ben,

Unfortunately on my business laptop I’m totally stuck with SkiaSharp updates. Somehow I keep getting messages on version problems (>116.0) and unable to load libSkiaSharp.dll.
I cleaned the solution from within Visual Studio and totally erased all the bin/obj folders, but no luck sofar.

On my private laptop the I don’t get these problems with the same code (pulled the same code) with Skia Sharp, but I receive the following Exception on a piece of code that’s very old.

Is this a bug? And if so, can you fix it?

Regards,
Guido van den Boom

Hi Ben,

I am experiencing a similar problem; it seems that the changes in the WPF library are not stable. In addition to the numerous namespace changes I must address, I have encountered several bugs:

  • I cannot set the overlay name to the GUID.
  • The ToWorldCoordinate() method throws an exception.
  • The BackgroundMap is not functioning; the projection didn’t work well.
  • There is a slight tile border in AreaBaseLayer UI rendering.

I believe this update should not be included in the current release. We have been consistently asking to switch to the beta version to resolve other bugs, so I think any updates should only involve minor bug fixes, not major changes. It’s important to note that our decision to use the beta version was based on the ThinkGeo team’s recommendation due to a bug in ThinkGeo version 14.2.1 related to the ProjectionConverter. I was advised to update to the beta version (Projection issue with ProjectionConverter and UnmanagedProjectionConverter for latest EPSG code - ThinkGeo UI for Desktop - ThinkGeo Discussion Forums). Since then, which was five months ago, we have continued to encounter significant issues while everyone is simply looking to resolve existing bugs.

I would like to know when we can shift our focus towards identifying and fixing bugs rather than repeatedly testing the entire program and submitting new bug reports.

Please let me know if you want me to create a separate topic for each issue.

Best regards,
Mahdi

Hi Guido,

I’d think that’s because SkiaSharp 3.116.1 for some reason cannot be found. Can you copy over the bin folder from your private laptop to the business one, double click the executable see if it works? If it does, compare the 2 bin folders and find the differences; if not that’s something wrong in the environment.

Overlay.Name was inheriting from its base class which has some limitations (e.g., can’t contain spaces, dots, or other special characters). I’ve fixed it by adding a new Name property without those limitations. It’s available in beta117.

Thanks,
Ben

Hi Mahdi,

Thank you for your detailed feedback. I understand your concerns regarding the current state of the WPF beta package. Here’s some context and guidance on the issues you’ve raised:

  1. General Development Package Notes:
    Our dev package is built automatically and pushed without manual testing. While you can lock into a specific version that resolves one or more issues, I generally don’t recommend staying on the latest beta release especially if you’re close to a production launch. We have been actively working on new features for the Desktop version over the last couple of months—which has led to more bugs than usual.

  2. Recommendation:
    The projection issue you mentioned (see Projection issue with ProjectionConverter and UnmanagedProjectionConverter for latest EPSG code) was resolved in v14.2.2. To be safe, you can update to the latest stable version v14.2.5 and wait for the upcoming v14.3. We have finished adding features and are now focused on testing. If you want access to some of the new features in the beta branch, give us another week and the beta should be more stable then.

  3. Specific Issues you mentioned:

  • Namespace Changes:
    Yes, the new namespace structure is a big breaking change. We understand it requires adjustments on your part; however, this change is good for long-term, and Modern IDEs (e.g., Visual Studio, Rider) make it pretty easy to find/resolve missing namespace.

  • cannot set the overlay name to the GUID.
    The overlay name relied on Canvas.Name which imposes restrictions (e.g., no spaces, dots, or special characters). This limitation has been addressed in beta117, so you should now be able to set the overlay name to a GUID.

  • The ToWorldCoordinate() method throws an exception.
    It’s because the CurrentExtent wasn’t set. We used to initialize CurrentExtent with a default (covering the entire world), but we removed that default value recently—which is why you’re seeing the error. We have reintroduced a default in beta118, which should resolve this issue. Additionally, the new implementation of MapView.ToWorldCoordinate() now correctly handles rotated maps.

  • The BackgroundMap is not functioning; the projection didn’t work well.
    Not recreated with beta117. Are you doing the Raster Projection? BackgroundMap not working or throw exceptions?

  • There is a slight tile border in AreaBaseLayer UI rendering.
    Not recreated with beta117. Which overlay you were using?

If you can create a separate topic for each issue, that will be great! Your feedback is always appreciated and help us locate/fix the issues faster. Again, if you prefer, you can also just give us some time and have another try in one week.

Thanks,
Ben

Hi Ben

Thanks for the response and really appreciate your efforts on this library.

Best wishes
Mahdi

You are always welcome!