From the 13th to the 17th of May, Camptocamp Lausanne offices welcomed Openlayers contributors and the Federal Office of Topography swisstopo development team to mark the end of a journey started more than one year ago. This journey was mainly about vector tiles rendering optimizations.
Swisstopo and many partners have given a lot to the Openlayers Developments Association in order to support the community and fund research and development work. Mainly to improve the user experience of vector maps navigation and usability. It was time to conclude this heavy workload and be sure to get the maximum of the rendering potentiel from the library, and have everything ready for the soon to be released 6.0 Version.
First conclusions are that WebGL is a must go if you want to render huge amount of features and base map layers as vector format. We must work on this attractive technology to provide a smooth and fast navigation experience.
So the short term strategy is to take benefit of the composite rendering to include an external WebGL renderer to display basemap vector layers. The Mapbox renderer through the mapbox-gl-js library is now integrated as an Openlayers layer and behaves among the Openlayers map context through its own WebGL canvas.
Integration is simple, non-intrusive and very performant, it’s a great choice if you want to provide maps with complex vector tiles such as swisstopo with their prototype light base map layer.
Those results revive the motivation to include more WebGL in the core of Openlayers rendering. Beside the Mapbox layer integration, a great achievement has been done with the WebGL Point API. It has been completely revamped: Openlayers supports once again WebGL point layers in a composite map.
The core WebGL rendering relies upon webworkers to provide multi thread processing while computing WebGL instructions. The results are very promising and we will hopefully see WebGL applied for lines and vector as well very shortly. Many challenges still lie ahead to make use of the power of the style function (an Openlayers specificity) in the WebGL rendering.
The choice of swisstopo to use Mapbox renderer in an Openlayers map, was done by working on all side tasks to make this integration easier:
- merging mapbox style files
- getting helpers to add or remove layers from the map
- thinking of how to organise the map among the Openlayers map and the mapbox-gl-js map, etc…
The vector tile usage also brings new consideration about 3D and map printing that we need to anticipate, it was a great place to have those first discussions and analysis.
The codesprint was finally a place to work on miscellaneous topics and fixing what the community needs for the 6.0 release. Such as canvas optimizations, cleaning, Safari canvas issues and many other stuff you can follow on the Openlayers github community site.
The week was very prolific, focused on swisstopo needs to display their complex prototype light base map as vector tiles in an Openlayers application. The test platform used is available at
Please visit this link to see how such a composite map is rendered, adapted and combined with OGC webServices like WMS, WMTS and KML GPX overlays .
All the work done on WebGL will continue within the community, see you in Bonn for a even larger community oriented Openlayers code sprint and WebGL features.