The LuciadCPillar API is based on the Model-View-Controller (MVC) architecture. The underlying concept of the MVC architecture is to separate the data (model), representation of the data (view), and the user interaction (controller) from each other. This separation results in a simpler design of the application and a higher flexibility and re-usability of code.
The MVC parts of the LuciadCPillar API consist of:
A LuciadCPillar model
A LuciadCPillar view, or the Map
A LuciadCPillar controller
Separating the different parts of the application allows you to re-use objects for different purposes and redefine objects without changing other objects. You can, for example, change a view without making changes to the models represented in the view. You can also re-define user interaction on a view without changing the view. Object re-use shortens the time for writing an application. In addition, it enhances a consistent functionality and design of all your applications.
A LuciadCPillar model stores and describes geographical data regardless of how to visualize and interact with the data. For example: a model contains the location of a number of hospitals together with additional information such as capacity.
You can access and modify the features in your model in a thread-safe way.
Many geometries are available out-of-the-box to model vector data in LuciadCPillar.
LuciadCPillar allows you filter model data by means of expressions and conditions, and reduce the amount of data loaded into the application.
For more information, see Filtering data with expressions and conditions.
The LuciadCPillar view component contains all information for the representation of data contained in the models. A view does not contain data itself. For example: in case of the hospitals, a view represents the location of a hospital with a red cross.
The view component is represented by the LuciadCPillar Map. You can add, modify, and delete Maps in your application, and add data layers and controllers to it.
A controller uses user input to interact with the Map or with elements on the Map. See Interacting with the Map using a controller.