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

Download history 41/week @ 2024-04-29 16/week @ 2024-05-06 21/week @ 2024-05-13 67/week @ 2024-05-20 54/week @ 2024-05-27 90/week @ 2024-06-03 88/week @ 2024-06-10 159/week @ 2024-06-17 278/week @ 2024-06-24 166/week @ 2024-07-01 102/week @ 2024-07-08 63/week @ 2024-07-15 23/week @ 2024-07-22 158/week @ 2024-07-29 120/week @ 2024-08-05 33/week @ 2024-08-12

335 每月下载量

MIT 许可证

73KB
1.5K SLoC

Walkers,Rust的地图小部件

crates.io docs.rs

Walkers是egui的滑块地图小部件,类似于非常流行的Leaflet,但用Rust编写。它可以编译成原生应用程序以及WASM。请参见这里的在线演示。

Screenshot

它支持OpenStreetMapmapbox以及兼容的瓦片服务器。

在部署您的应用程序之前,请熟悉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 SDKcargo-ndk

cd demo_android
make run-on-device

依赖项

~15–28MB
~466K SLoC