#graphics #web-gpu #maps #mobile #map #desktop #back-end

maplibre

桌面、移动和 Web 的地图

1 个不稳定版本

0.0.3 2023 年 2 月 18 日
0.0.2 2022 年 4 月 26 日
0.0.1 2022 年 4 月 19 日

#300图形 API


用于 2 存储库

MIT/Apache

475KB
12K SLoC

Web、移动和 Linux 的原生地图
用 Rust 编写的地图渲染库。

项目状态

该项目处于概念验证状态。概念验证已完成,除了文本渲染。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。当前的实现是所使用技术堆栈的概念验证。目前尚不清楚是否可以使用当前堆栈实现渲染矢量图形所需的高性能。

演讲:矢量世界

(外部链接)

(YouTube 上的旧演讲)

演示

当前功能

  • 支持在 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 文档

此功能生成此包的文档并打开浏览器。这还包括每个依赖项的文档。

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 的渲染器分叉到这个项目中。

依赖项

~18–60MB
~1M SLoC