Crates.io | galileo |
lib.rs | galileo |
version | 0.1.1 |
source | src |
created_at | 2024-01-13 20:58:52.153443 |
updated_at | 2024-02-14 23:41:35.778578 |
description | Cross-platform general purpose map rendering engine |
homepage | |
repository | https://github.com/Maximkaaa/galileo |
max_upload_size | |
id | 1098829 |
size | 507,747 |
Galileo is a general purpose cross-platform geo-rendering library.
Architecture of Galileo is designed specifically to allow different modes of use:
This does bring certain challenges and adds to complexity. For example, caching of loaded and rendered objects works completely differently in server in client applications. Galileo is designed in such a way as to allow the user of the library to make all the relevant decisions and not to force one way.
It also does not make any assumptions about tile layer schemas, CRS and datums. Feature layers support transparent re-projecting into the map CRS (support for projecting tile layers is planned but not implemented yet).
At the moment Galileo uses wgpu
backend to render the map. This means that
it can be used on any platform that wgpu
supports:
Still, the backend is not integral part of the Galileo design, so we will probably try other promising backends (like vello).
At this point, you can develop an application using Galileo only in Rust. But there is
a POC example of how we envision future development on other platforms: [wasm_examples/raster_tiles].
When all main features of Galileo are more or less stable (or when a need arises) we
will add FFI bindings to other languages using wasm-bindgen
and uniffi
. This will
allow you to create your applications in JS
, Kotlin
, Swift
or Python
using
common API.
Galileo is an active WIP, here is the list of the features that are already present:
There are so many things that we all want from mapping engine, but it's impossible to have them all done at the same time. So here's our current plan and priorities:
Rust examples of using Galileo are located at galileo/examples
. Refer to the readme
for the list, description and run instructions.
There are also examples of running Galileo in a web-browser located at wasm_examples
folder. These are
excluded from the workspace (because Cargo does not like cross-platform workspaces).
To run those you will need to install wasm-pack:
wasm-pack build wasm_examples/countries --target no-modules --release
After that open index.html
in your browser (must be served from localhost
, use your
favourite developer server).
Check out this example to run Galileo on Android.
Install the target:
rustup target add x86_64-px-window-gnu
Install cross-linker. For Debian/Ubuntu:
sudo apt-get install mingw-w64
And then build it:
cargo build --target x86_64-px-windows-gnu
There is still a lot of work to be done to make Galileo feature-full, production ready and useful for many. And we would love to work on this full-time to bring this to you as soon as possible. So we are looking for sponsors to make it possible.
Sponsor funds will help support maintainer's dedicated work and eventually fund freelance contributors.
If you think this library can be useful to you or someone you love, consider supporting its development. Sponsoring comes with additional advantages:
You can use this library without any worries as it is licensed under either of
at your option.
Feature requests, pull requests, bug reports, comments, questions and discussion are welcome. Please, follow the code of conduct when contributing.
Note, that since the library is still in early stages of development, any part may change at any moment. So before starting any major undertaking with it or within it, open a discussion to sync your ideas with others' ideas.