Walkers
slippy map (openstreetmap) widget for egui
Install / Use
/learn @podusowski/WalkersREADME
Walkers, a map widget for Rust
Walkers is a slippy maps widget for egui, similar to very popular Leaflet, but written in Rust. It compiles to native applications as well as WASM. See the online demo here.

It supports OpenStreetMap, mapbox, and compatible tile servers as well as off-line tiles using the PMTiles format.
Before deploying your application, please get yourself familiar with the OpenStreetMap usage policy, and consider donating to the OpenStreetMap Foundation.
Features
- Fetching tiles over HTTP from XYZ tile servers.
- Reading tiles from local
.pmtilesfiles. - Raster tiles rendering.
- Vector tiles (MVT) rendering with styling similar to MapLibre style.
- Experimental local
.geojsonfiles support.
Quick start
Walkers has three main objects. Tiles downloads images from a tile map provider
such as OpenStreetMap and stores them in a cache, MapMemory keeps track of
the widget's state and Map is the widget itself.
use walkers::{HttpTiles, Map, MapMemory, Position, sources::OpenStreetMap, lon_lat};
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 ui(&mut self, ui: &mut egui::Ui, _frame: &mut Frame) {
ui.add(Map::new(
Some(&mut self.tiles),
&mut self.map_memory,
lon_lat(17.03664, 51.09916)
));
}
}
You can see a more complete example here.
Running the demo
Native
To run demo application locally, use a default cargo run target.
cargo run
Web / WASM
cd demo_web
trunk serve --release
Android
You need to have Android SDK and cargo-ndk installed.
cd demo_android
make run-on-device
Offline maps
To obtain offline maps in .pmtiles format, you can fetch Dolnośląskie region extract from
Protomaps using:
just protomaps-dolnoslaskie
You can also use Overpass API to fetch hiking trails in GeoJSON format:
just overpass-trails-dolnoslaskie
Mapbox support
To enable mapbox layers, you need to define MAPBOX_ACCESS_TOKEN environment
variable before building. You can get one by creating a
mapbox account.
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
