#graphics #vector-graphics #maps #map #web-gpu #maplibre-rs

maplibre-build-tools

为maplibre-rs提供的构建工具库

1个不稳定版本

0.1.0 2022年4月26日
0.0.3 2023年2月18日

#657图像

每月下载量 27
3个crate中使用(通过maplibre

MIT/Apache

15KB
194

适用于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 文档

这将为该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