Today a new version of Maps and Semantic Maps where released. This version, 0.3.4, mainly focused on the internal structure of the extensions, performance issues and bug fixes. Some small new features have been added though.
Bug fixes
- Fixed some issues with invalid parameter handling. This comes down to 2 things. The first is that before this version, an empty parameter (so || instead of |name=value|) would override the default value when it occurred after the default. So #display_point:coordinates=1,1||service=openlayers would end up showing an error that no coordinates where provided. The second one is a fix in the error message you would get when entering a coordinate parameter with an empty value, like |coordinates=|, this previously caused the error that location “” could not be displayed, and has now been replaced by an error message saying that no coordinates have been provided, as is the case.
- In the from handling code, I fixed a more severe bug, one that caused a wiki with SM installed to fail in case Semantic Forms was not installed and enabled. Someone pointed out this bug to me via a talk page. Surprisingly, no one had noticed this pretty big bug before, which demonstrates the wide use of SF, at least by the people also using SM.
- Another bug pointed out by someone on the talk page of SM is that SM only displayed the last coordinate property in a result of a query on a map. Semantic Google Maps supported this feature, but a some point, presumably at version 0.2, I accidentally removed it while refactoring the query result handling code. Anyway, it’s back now.
Refactoring
- The biggest change in this release is the introduction of a new feature hook system. This hook system allows you to add new mapping features to Maps, very much like the mapping service hook system. This has great consequences for the modularity of Maps, which has taken a big step forward. Every feature is loaded and initialized from the initialization method of Maps. This allows any extension to adds it’s own functionality to Maps, that can then use the general mapping functions of Maps, and the services hook system, and of course then be used in other extensions. This change has rendered Semantic Maps into a simple holder of 2 features: query printers and form inputs. It does not do any initialization on it’s own any more, and simply hooks into Maps. Obviously, this new hook system brought with it a whole list of extensive changes made in both maps and Semantic Maps.
- Added internationalization for the mapping service names, and to the list notation at several places.
- Moved the SM related JS present in Maps files to separate files in SM.
- Fixed tiny performance issues all over the code.
- Added fall-back mechanism to the geocoding methods, and re-introduced the old style request, for cases where cURL is disabled.
New features
The only real new functionality is that you now can configure which mapping features should be enabled, and which should not. This is of course a direct result from the new feature hook system.
You can view a complete list of changes to Maps and changes to Semantic Maps at the relevant documentation pages.
So, what’s next?
Before 0.4, which will introduce some big new features, I’m planning to release at least one update to the 0.3.x branch. This update will have geocoding as a feature in the new hook, a hook system for parser functions, a new mapping service called OSM (optimized OSM code working with OpenLayers) and a new parser function display_map, to simply display a map without any markers.