SkillAgentSearch skills...

Walkers

slippy map (openstreetmap) widget for egui

Install / Use

/learn @podusowski/Walkers
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Walkers, a map widget for Rust

made in Europe crates.io docs.rs

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.

Screenshot

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 .pmtiles files.
  • Raster tiles rendering.
  • Vector tiles (MVT) rendering with styling similar to MapLibre style.
  • Experimental local .geojson files 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

View on GitHub
GitHub Stars259
CategoryDevelopment
Updated6d ago
Forks52

Languages

Rust

Security Score

100/100

Audited on Mar 30, 2026

No findings