Now that we are familiar with extending OpenLayers 3 classes and vector management, we can go on and create some interactions and controls. These two terms became distinct in the library, unlike its predecessor. In a nutshell, interactions are special controls that involve a pointer and pointer events, while controls are the traditional controls that are static in nature and can be mapped to a GUI button or DOM element. This is not a bad thing, but it requires more architectural considerations when we create an application. We need to create a structure that can handle both of them in a nice, responsive GUI way.
In this chapter, we will cover the following topics:
In this chapter, we won't use any special APIs or libraries, we just play with OpenLayers 3 and native JavaScript. However, this is the chapter where we will use a feature that is not exported in the compiled library; therefore, we will need the debug version of OpenLayers 3, called
ol-debug.js. The debug version of the library is in the same folder as the compiled version.
As we would like to build a complete toolbar that can manage our controls and interactions, we need to make some considerations first. In the next examples, we will build a constructor function, which is similar to our layer tree. The constructed object will take care of the management of its internal controls. If you have used OpenLayers 2, you must be familiar with the panel control. Ours will be similar to it.
Right after this, we will create a general purpose control that has only one job: mapping an interaction to a button correctly. As the interaction and control have become distinct features, there is a gap between them, which we will fill. We will reuse this general control for our various purposes, and build a rich application with it, and various interactions assigned to it.