23个重大版本更新
0.24.0 | 2024年7月6日 |
---|---|
0.22.0 | 2024年4月13日 |
0.20.0 | 2024年3月16日 |
0.15.0 | 2023年12月25日 |
0.6.0 | 2023年7月18日 |
#48 in Geospatial
335 每月下载量
73KB
1.5K SLoC
Walkers,Rust的地图小部件
Walkers是egui的滑块地图小部件,类似于非常流行的Leaflet,但用Rust编写。它可以编译成原生应用程序以及WASM。请参见这里的在线演示。
它支持OpenStreetMap、mapbox以及兼容的瓦片服务器。
在部署您的应用程序之前,请熟悉OpenStreetMap使用政策,并考虑向OpenStreetMap基金会捐款。
快速入门
Walkers有三个主要对象。 Tiles
从瓦片地图提供者(如OpenStreetMap)下载图像并将它们存储在缓存中,MapMemory
跟踪小部件的状态,而 Map
是小部件本身。
use walkers::{HttpTiles, Map, MapMemory, Position, sources::OpenStreetMap};
use egui::{Context, CentralPanel};
use eframe::{App, Frame};
struct MyApp {
tiles: HttpTiles,
map_memory: MapMemory,
}
impl MyApp {
fn new(egui_ctx: Context) -> Self {
Self {
tiles: HttpTiles::new(OpenStreetMap, egui_ctx),
map_memory: MapMemory::default(),
}
}
}
impl App for MyApp {
fn update(&mut self, ctx: &Context, _frame: &mut Frame) {
CentralPanel::default().show(ctx, |ui| {
ui.add(Map::new(
Some(&mut self.tiles),
&mut self.map_memory,
Position::from_lon_lat(17.03664, 51.09916)
));
});
}
}
您可以在这里看到一个更完整的示例。
运行演示
Walkers支持多种构建选项,如Android和WASM。它们都共享一个公共库 - demo
,但需要不同的构建工作流程,不一定与Cargo兼容。
原生
要启用mapbox图层,您需要在构建之前定义MAPBOX_ACCESS_TOKEN
环境变量。您可以通过创建mapbox账户来获得一个。
cd demo_native
cargo run
Web / WASM
cd demo_web
trunk serve --release
Android
您需要安装Android SDK和cargo-ndk。
cd demo_android
make run-on-device
依赖项
~15–28MB
~466K SLoC