Wednesday, 29 May 2013

Announcing: MapGuide Maestro 5.0 RC1 and 4.0.5 maintenance

Wow! It's actually been 6 months since I announced the previous 5.0 beta and 4.0.x stable release! Ok, it's time to get this thing out the door.

Here's the first Release Candidate and a matching 4.0.5 maintenance release with bugfixes.

Here's what's new in the Release Candidate. This is the last of the new features for 5.0. It will be all bug fixes from here to the final release.

Live Map Definition Editor Improvements

The Live Map Definition Editor we introduced in beta 2 has undergone some major improvements.

We can now view Feature Sources in the Repository View. Resources in the Repository View can also be edited in-place.

This launches an XML editor allowing you to edit and preview the resource content.

Why do we launch an XML editor and not a specialized one? Because the code that allows us to resolve a specialized editor based on a given resource and schema version is currently tightly bound to the Maestro AddIn infrastructure. The Live Map Definition editor is a standalone tool and does not use this infrastructure so we can't tap into this same code. We'll eventually be able to launch a specialized editor, but that will involve a big refactoring job that we'll only realistically do once 5.0 is out the door.

We've also implemented most of the drag/drop processes that are possible to maximize productivity. All the drag/drop actions that are now possible with this release are outlined in the images below.

Fusion Editor Enhancements

The Fusion Editor has undergone several enhancements. The Widget Management dialog is now a tabbed interface, to accommodate a new XML editor to edit the special Map Widget. Previously, there was no means through the Fusion editor to edit the map widget.

Existing widget management functionality has been moved to the "Other Widgets" tab.

As I've talked about previously, this release includes the editor changes to distinguish between dockable and non-dockable widgets.

In order to provide a consistent interface and to reduce developer/maintenance effort, we've removed all specialized widget editors for this release. The reason is simply that there is just too much effort involved to give each widget in Fusion its own specialized editor (there's a lot of widgets!). Not to mention that widgets may be improved upon individually and not necessarily tied to a new MapGuide release, making the task of having our specialized UIs in sync and up to date quite difficult.

You're probably used to editing widgets via its XML anyway, so for the purposes of simplicity that's the only option we'll be giving you. But to make things just a bit easier, the Generic widget editor now uses the ICSharpCode text editor to provide XML highlighting.

More Feature Source Shortcuts

We've added some extra context menu commands to provide common shortcut operations for Feature Sources.

Firstly, a new shortcut to test a Feature Source connection bypassing the need to open the Feature Source in an editor.

Secondly, a new shortcut to automatically create a default layer for each feature class in the Feature Source

This will walk the schema of the feature source and present a list of Feature Classes for you to make layers from.

Choose the folder to create the layers in and this will then create a default layer in the chosen folder for each selected Feature Class. This is a nice convenient shortcut to rapidly create layers from a Feature Source. The supported geometry types of each Feature Class is used to determine what default styles to create. For example, if the geometry of a Feature Class only supports points, then only a Point style will be created for the default layer.

Runtime Map Inspector

The Runtime Map Inspector tool now includes a "Draw Order" tab so you can see how the layers are ordered display-wise.


The resource re-pointer context menu command now supports re-pointering any resource that has dependencies (ie. Any resource type in this diagram that has a downward-pointing arrow to another resource type)

For those wondering what this command even does. The re-pointer command allows you to have all references of a selected resource to "re-point" to another resource of your choosing. An example usage scenario would be if you had a bunch of layers pointing to a dev/test Feature Source and you want to switch said layers over to your production Feature Source. This command provides a nice convenient way to easily make such a switch.

GDAL Feature Sources

The GDAL Feature Source editor now supports the new resampling method parameter introduced in the 3.8.0 iteration of the FDO provider (included with MapGuide Open Source 2.5)

This feature has also been backported to 4.0.5

Large File upload support over HTTP

This isn't so much a new feature, but rather a fix that allows you to upload really large files over the mapagent HTTP interface without the risk of OutOfMemoryExceptions happening. The previous implementation naively used a MemoryStream to store the entire uploaded file before sending to the mapagent, which if you're trying to load say a SDF file that's several GBs in size, will easily trigger the OutOfMemoryException.

This new implementation will instead stream the contents from a file location (we'll dump the input stream to a temp file if required) to the mapagent. This method is much more memory efficient and can easily handle files several GBs in size. This is the same technique we currently use for the Local and LocalNative implementations. Now all 3 implementations of SetResourceData use this method.

With this support, Maestro can now load package files several GBs in size in a non-transactional fashion regardless of underlying implementation (HTTP, Local or LocalNative) in a memory-efficient manner without breaking a sweat. We say non-transactional because doing this transactionally will still probably trigger the OOM, except on the MapGuide Server end as it will probably be trying to read the entire package file into memory in order to be able to load it.

Realistically speaking, we're not saying or recommending that you use this new capability to actually upload files several GBs over the internet. Rather, this capability is for intranet/localhost HTTP connections to your MapGuide Server where you want to be able to easily upload really large files without concern for bandwidth and memory usage.

This support has also been backported to 4.0.5

So I've said all that needs to be said. Go forth and download


mapNinja said...

A M A Z I N G J O B !

Jason Birch said...

Wow, what a solid release. Really love what you've done with the dynamic map editor.