GeoView is a library for displaying and interacting with geographical objects and cartographic layers in a user interface.
GeoView’s architecture is designed to support multiple graphics backends. Currently, the default and only supported backend is Bloc, using the Alexandrie library. Thanks to its integration with Bloc, GeoView also works within Toplo UI views.
-
Graphics backend agnostic
GeoView is designed to be independent of any specific graphics backend. The default implementation uses Bloc/Alexandrie. -
Multiple levels of user-facing APIs
GeoView provides several API layers to suit different abstraction levels:- High-level API
Work directly with geographic data using real-world units like latitude/longitude and meters. - Intermediate-level API
Provides access to cartesian coordinates (x
,y
,z
) for spatial logic and control. - Low-level API
Works in display/device coordinates (pixels, points), ideal for low-level rendering customization.
- High-level API
-
Fully customizable rendering
Visual appearance is completely decoupled from rendering technology, allowing flexible styling.
GeoView includes a library of ready-to-use geographic objects, such as:
- Circles
- Lines
- Points
- Polygons
- Labels
- And more (non-exhaustive list)
These built-in components are designed to cover common geospatial visualization needs and can be extended or customized.
In addition, GeoView provides a layer-based system to organize and manage rendering. Layers are a flexible mechanism that:
- Allow grouping of any kind of geographic or custom object
- Control visibility, rendering order, and interactions independently
- Are not limited to built-in objects — you can use layers for custom components or specialized rendering logic
- Support splitting the rendering of a single object type across multiple layers
(e.g., you can render position icons in one layer and their corresponding labels in another, to better manage z-order or interaction logic)
This approach gives developers fine-grained control over how geographical content is displayed and interacted with.
-
Simplified symbology management
Define and apply visual styles (e.g., color, icons) to geographic objects easily and consistently. -
Support for multiple map projections
Allows working with different geographic projections.
Note: The map data provider must support the selected projection. -
Picking API
Enable object selection and interaction through pointer events. -
Optional integration with Molecule
Seamlessly plug into the Molecule component framework if desired.
GeoView is in active development but already powers many UI applications and prototypes involving geospatial data.
Make sure your Bloc backend uses Alexandrie, as other backends are not yet supported.
To install GeoView with all features and dependencies, simply execute the following script in your Pharo image:
Metacello new
baseline: 'GeoView';
repository: 'github://OpenSmock/GeoView:main/src';
load.
If you prefer to install only the core version of GeoView (without Molecule component framework integration), use the following script:
Metacello new
baseline: 'GeoView';
repository: 'github://OpenSmock/GeoView:main/src';
load: 'Core'.
Core :
Default/Full adding :
Note: Bloc and Alexandrie will soon be integrated into Pharo, at which point this dependency will be removed.
This project is licensed under the MIT License - see the LICENSE file for details.