1个不稳定版本
0.1.0 |
|
---|---|
0.0.3 | 2023年2月18日 |
#657 在 图像
每月下载量 27
在3个crate中使用(通过maplibre)
15KB
194 行
WebGL演示 | 书籍 | API | 在Matrix Space聊天
项目状态
该项目处于概念验证状态。除了文本渲染外,概念验证已完成。Rust生态系统非常适合这个项目。
未来,该项目可能被MapLibre采用并支持,以实现下一代地图解决方案。
📰 我们最近发布了一篇关于maplibre-rs的论文,名为maplibre-rs:迈向可移植的地图渲染器!
描述
maplibre-rs是一个可移植且性能优异的矢量地图渲染器。我们的目标是支持Web、移动和桌面应用程序。这是通过新颖的WebGPU规范实现的。已经有很多本地实现实现了这个规范。在Web上,由Firefox、Chrome和Safari实现。还有独立实现,直接使用Vulkan、OpenGL或Metal作为后端。这些后端允许maplibre-rs在移动和桌面应用程序上运行。
Rust被用作所有平台上的通用语言。这是由WebAssembly实现的,它允许我们使用Rust进行Web开发。
maplibre-rs的目标是将地图渲染出来以可视化数据。目前,maplibre-rs的目标不是取代现有的矢量地图渲染器,如Google Maps、Apple Maps或MapLibre。当前实现作为所使用技术堆栈的概念验证。使用当前堆栈实现使用矢量图形渲染地图的高性能要求是否可行尚不清楚。
演讲:矢量世界
(外部链接)
演示
- WebGL
- 具有多线程的WebGL - 目前在Safari上无法工作
- WebGPU - 仅适用于Firefox和Chrome的开发版本
当前功能
- 在 Linux、Android、iOS、macOS、Firefox 和 Chrome 上运行
- 渲染矢量瓦片数据集
- 由 winit 驱动的简单导航
- 在所有平台上多线程运行
- 查询要素数据
缺失的要素
- 渲染文本
- 按要素渲染
- 渲染
- 标签
- 符号
- 栅格数据
- 3D 地形
- 高程阴影 (DEM)
- 碰撞检测
- 支持
- GeoJSON
- API 用于
- TypeScript
- Swift
- Java/Kotlin
构建 & 运行
克隆项目
git clone https://github.com/maplibre/maplibre-rs.git
在桌面电脑上构建并运行
cargo run -p maplibre-demo
有关在不同平台上运行演示的更多信息,请参阅此处。
Rust 设置
安装 rustup,因为这是设置 Rust 工具链的推荐方式。
在构建此项目时,工具链将被自动下载。有关工具链的更多信息,请参阅 ./rust-toolchain.toml。
API 文档
这将为该crate生成文档并打开浏览器。这还包括每个依赖项的文档。
cargo doc --open
您还可以在此处查看最新的文档此处。
书籍
maplibre-rs 书籍从用户和开发角度提供了对项目的整体概述。
RFC
我们建立了一个RFC流程,必须使用该流程来描述对maplibre-rs的重大更改。当前的RFC可以在书籍中浏览。
引用
如果您希望在一篇科学出版物中引用此项目,请使用以下格式
@article{maplibre_rs,
title = {maplibre-rs: toward portable map renderers},
author = {Ammann, M. and Drabble, A. and Ingensand, J. and Chapuis, B.},
year = 2022,
journal = {The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences},
volume = {XLVIII-4/W1-2022},
pages = {35--42},
doi = {10.5194/isprs-archives-XLVIII-4-W1-2022-35-2022},
url = {https://www.int-arch-photogramm-remote-sens-spatial-inf-sci.net/XLVIII-4-W1-2022/35/2022/}
}
致谢
maplibre-rs的渲染器主要基于bevy的渲染器。bevy的渲染器被分叉到这个项目中,以便有一个稳定且通用的基础。
依赖项
~6–18MB
~243K SLoC