With the OL3 Vienna Code Sprint coming to its end now is probably a good time for a recap on what we’ve achieved. We have done a lot of work on consolidating the architecture and project infrastructure, and have also added new functionality along the way.
The above image is screenshot of one of our examples. This example includes two maps, a WebGL map and a DOM map. Both maps are synchronized, when one moves the other moves, when one rotates the other rotates, etc.
We can now generate the API documentation using jsdoc3. The generated API documentation is very “raw” right now, and would definitely deserve some love. But we at least have a tool that is compatible with the Closure Compiler, with plans for even better compatibility in the future. The API doc is available online.
The Jasmine framework is used for testing. Jasmine provides a nice language for describing test specifications. In addition, Jasmine makes it easy to run tests “headlessly”, i.e. outside any browser window. This allows for Continuous Integration, which we feel is very important given out ambitions and expectations for the project. We need solid foundations from the very start of the project.
We rely on the Travis CI (Continuous Integration) service. Each time new code is pushed to the repository Travis fetches this new code, runs the linter, compiler, and the test suite. Breaking changes are thus immediately identified. Check out the OpenLayers 3 Travis page.
We have worked on a flexible system for constraining resolutions and rotation angles. This system allows for easily specifying what the possible resolutions and rotation angles can be. The system is flexible to allow for other types of constraints in the future, for restricting extents for example.
We discussed and worked on the API again. We’re not ready to commit to a final API now, so we’ve focused our efforts on the low-level API we’ll eventually build on, providing conveniences as we go.
OpenLayers 3 needs to work on touch devices. Panning the map now works correctly on Android and iOS. The pan performance still needs improving. The zoom control’s + and – buttons are responsive in touch devices, as described in this article and elsewhere.
The DOM renderer now displays interim tiles while new tiles, at a better resolution, are loaded. This prevents getting a blank map while tiles are loading. This change revealed bugs in the DOM renderer code, and required major refactoring.
The WebGL renderer supports map rotations, and we have starting adding this support to the DOM renderer. This is based on CSS3 transforms.
We’d like to thank the Research Group Cartography of the Vienna University of Technology again. The venue they offered us turned out to be a perfect place for the sprint.
Our task tracking tool for this sprint: