Structure of OpenLayers 3
OpenLayers 3 is a well structured, modular, and complex library, where flexibility and consistency take higher priority than performance. However, this does not mean OpenLayers 3 is slow. On the contrary, the library highly outperforms its predecessor; therefore its comfortable and logical design does not really adversely affect its performance. The relationship of some of the most essential parts of the library can be described with a radial Universal Modeling Language (UML) diagram, such as the following:
Note
Reading a UML scheme can seem difficult, and can be difficult if it is a proper one. However, this simplified scheme is quite easy to understand. With regard to the arrows, 1
represents a one-to-one relation, while the 0..n
and 1
symbols denote a one-to-many relationship.
You will probably never get into direct contact with the two superclasses at the top of the OpenLayers 3 hierarchy: ol.Observable
, and ol.Object
. However, most of the classes you actively use are children of these classes. You can always count on their methods when you design a web mapping or WebGIS application.
In the diagram, we can see that the parent of the most essential objects is the ol.Observable
class. This superclass ensures all of its children have consistent listener methods. For example, every descendant of this superclass bears the on
, once
, and un
functions, making registering event listeners to them as easy as possible.
The next superclass, ol.Object
, extends its parent with methods capable of easy property management. Every inner property managed by its methods (get
, set
, and unset
) are observable. There are also convenience methods for bulk setting and getting properties, called getProperties
and setProperties
. Most of the other frequently used classes are direct, or indirect, descendants of this superclass.