{"id":13473960,"url":"https://github.com/maplibre/maplibre-rs","last_synced_at":"2025-05-14T08:09:10.715Z","repository":{"id":37011611,"uuid":"432679159","full_name":"maplibre/maplibre-rs","owner":"maplibre","description":"Experimental Maps for Web, Mobile and Desktop","archived":false,"fork":false,"pushed_at":"2024-12-13T03:16:37.000Z","size":26122,"stargazers_count":1422,"open_issues_count":66,"forks_count":83,"subscribers_count":24,"default_branch":"main","last_synced_at":"2025-05-14T01:45:05.905Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maplibre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["maplibre"],"open_collective":"maplibre"}},"created_at":"2021-11-28T10:18:22.000Z","updated_at":"2025-05-10T20:53:49.000Z","dependencies_parsed_at":"2023-12-16T16:01:30.179Z","dependency_job_id":"ca4b4997-465b-40b8-8d1c-2ee6448618da","html_url":"https://github.com/maplibre/maplibre-rs","commit_stats":{"total_commits":863,"total_committers":18,"mean_commits":47.94444444444444,"dds":0.06257242178447275,"last_synced_commit":"d05143abd228ad7d242dc7fa36661de18c306858"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maplibre%2Fmaplibre-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maplibre%2Fmaplibre-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maplibre%2Fmaplibre-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maplibre%2Fmaplibre-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maplibre","download_url":"https://codeload.github.com/maplibre/maplibre-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101586,"owners_count":22014907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T16:01:08.345Z","updated_at":"2025-05-14T08:09:10.681Z","avatar_url":"https://github.com/maplibre.png","language":"Rust","funding_links":["https://github.com/sponsors/maplibre","https://opencollective.com/maplibre"],"categories":["Rust","Install from Source","Map Rendering"],"sub_categories":["Maps"],"readme":"\u003ch1 style=\"text-align:center\"\u003e\n  \u003cimg width=\"350px\" alt=\"maplibre-rs\" src=\"./docs/logo/maplibre-rs-with-text.svg\"\u003e\n\u003c/h1\u003e\n\n\u003cdiv style=\"text-align:center\"\u003e\n  \u003cstrong\u003eNative Maps for Web, Mobile and Linux\u003c/strong\u003e\n\u003c/div\u003e\n\u003cdiv style=\"text-align:center\"\u003e\n  A map rendering library written in Rust.\n\u003c/div\u003e\n\n\u003cdiv style=\"text-align:center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square\"\n      alt=\"Stability\" /\u003e\n  \u003ca href=\"https://github.com/maplibre/maplibre-rs/actions/workflows/on_main_push.yml\"\u003e\n    \u003cimg src=\"https://github.com/maplibre/maplibre-rs/actions/workflows/on_main_push.yml/badge.svg\"\n        alt=\"Build status\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://matrix.to/#/#maplibre:matrix.org\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=Space\u0026message=%23maplibre\u0026color=blue\u0026logo=matrix\"\n        alt=\"Build status\" /\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv style=\"text-align:center\"\u003e\n  \u003ch3\u003e\n    \u003ca href=\"https://webgl.demo.maplibre-rs.maplibre.org\"\u003e\n      WebGL Demo\n    \u003c/a\u003e |\n    \u003ca href=\"https://maplibre.org/maplibre-rs/docs/book/\"\u003e\n      Book\n    \u003c/a\u003e |\n    \u003ca href=\"https://maplibre.org/maplibre-rs/docs/api/maplibre/\"\u003e\n      API\n    \u003c/a\u003e |\n    \u003ca href=\"https://slack.openstreetmap.us/\"\u003e\n      Chat (#maplibre-rs)\n    \u003c/a\u003e\n  \u003c/h3\u003e\n\u003c/div\u003e\n\n## Project State\n\nThis project is in a proof-of-concept state. The proof of concept is done except for text rendering.\nThe Rust ecosystem is suited very well for this project.\n\nIn the future, this project could be adopted and supported by [Maplibre](https://github.com/maplibre) to implement a\nnext-gen mapping solution.\n\n📰 We recently released a paper about maplibre-rs called [maplibre-rs: toward portable map renderers](https://doi.org/10.5194/isprs-archives-XLVIII-4-W1-2022-35-2022)!\n\n## Description\n\nmaplibre-rs is a portable and performant vector maps renderer. We aim to support web, mobile and desktop applications. This\nis achieved by the novel [WebGPU](https://www.w3.org/TR/webgpu/) specification. Plenty of native implementations are\nalready implementing this specification. On the web, it is implemented by Firefox, Chrome and Safari. There are also\nstandalone implementations that directly use Vulkan, OpenGL or Metal as a backend. Those backends allow maplibre-rs to run on\nmobile and desktop applications.\n\nRust is used as a Lingua franca on all platforms. This is made possible by WebAssembly, which allows us to use Rust for\nweb development.\n\nThe goal of maplibre-rs is to render maps to visualize data. Right now the goal of maplibre-rs is not to replace existing\nvector map renderers like Google Maps, Apple Maps or MapLibre. The current implementation serves as a proof-of-concept\nof the used technology stack. It is unclear whether the high-performance requirements of rendering maps using vector\ngraphics are achievable using the current stack.\n\n## Demos\n\n- [WebGL](https://webgl.demo.maplibre-rs.maplibre.org)\n- [WebGL with multithreading](https://webgl-multithreaded.demo.maplibre-rs.maplibre.org) - Does not work on Safari right now\n- [WebGPU](https://webgpu.demo.maplibre-rs.maplibre.org) - Only works with development versions of Safari TP, Firefox and Chrome\n\n## Current Features\n\n* Runs on Linux, Android, iOS, macOS, Firefox, Safari (\u003e=v16 due to (#166)[https://github.com/maplibre/maplibre-rs/issues/166]) and Chrome\n* Render a vector tile dataset\n* Simple navigation powered by winit\n* Multithreaded on all platforms\n* Querying feature data\n\n## Missing Features\n\n* Rendering Text\n* Per-Feature Rendering\n* Rendering:\n    * Labels\n    * Symbols\n    * Raster data\n    * 3D terrain\n    * Hill-shade (DEM)\n* Collision detection\n* Support for:\n    * GeoJSON\n* API for:\n    * TypeScript\n    * Swift\n    * Java/Kotlin\n\n## Building \u0026 Running\n\nClone the project\n\n```bash\ngit clone https://github.com/maplibre/maplibre-rs.git\n```\n\nBuild and run it on a desktop\n\n```bash\ncargo run -p maplibre-demo\n```\n\nMore information about running the demos on different platforms can be\nfound [here](https://maplibre.org/maplibre-rs/docs/book/development-guide/how-to-run.html).\n\n## Rust Setup\n\nInstall [rustup](https://rustup.rs/) because this is the recommended way of setting up Rust toolchains.\n\nThe toolchain will be automatically downloaded when building this project.\nSee [./rust-toolchain.toml](./rust-toolchain.toml) for more details about the toolchain.\n\n## API Documentation\n\nThis generates the documentation for this crate and opens the browser. This also includes the documentation of every\ndependency.\n\n```bash\ncargo doc --open\n```\n\nYou can also view the up-to-date documentation [here](https://maplibre.org/maplibre-rs/docs/api/maplibre/).\n\n## Book\n\nThe maplibre-rs [book](https://maplibre.org/maplibre-rs/docs/book/) features a high-level overview over the project from a user and development perspective.\n\n## RFCs\n\nWe established an RFC process which must be used to describe major changes to maplibre-rs.\nCurrent RFCs can be browsed in the [book](https://maplibre.org/maplibre-rs/docs/book/rfc/0001-rfc-process.html).\n\n\n## Citing\n\nIf you wish to cite this project in a scientific publication use the following format:\n\n```bibtex\n@article{maplibre_rs,\n\ttitle        = {maplibre-rs: toward portable map renderers},\n\tauthor       = {Ammann, M. and Drabble, A. and Ingensand, J. and Chapuis, B.},\n\tyear         = 2022,\n\tjournal      = {The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences},\n\tvolume       = {XLVIII-4/W1-2022},\n\tpages        = {35--42},\n\tdoi          = {10.5194/isprs-archives-XLVIII-4-W1-2022-35-2022},\n\turl          = {https://www.int-arch-photogramm-remote-sens-spatial-inf-sci.net/XLVIII-4-W1-2022/35/2022/}\n}\n```\n\n## Acknowledgements\n\nThe renderer of maplibre-rs is heavily based on the renderer of [bevy](https://bevyengine.org/). Bevy's renderer was \nforked into this project in order to have a solid and generic base.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaplibre%2Fmaplibre-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaplibre%2Fmaplibre-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaplibre%2Fmaplibre-rs/lists"}