9 releases

0.4.2 Jan 24, 2024
0.4.1 May 27, 2022
0.4.0 May 13, 2021
0.3.2 Apr 28, 2021
0.1.1 Sep 30, 2020

#304 in Images


Used in mbta-rs

MIT license

460KB
750 lines

Build Status docs crate

StaticMap

StaticMap is a library for rendering images of tile based maps.

Features

  • Render a map to a PNG image.
  • Draw features on a map, such as:
    • Lines
    • Circles
    • PNG icons

Documentation

API Documentation.

Examples

See the /examples folder for different examples on how to use the library.

Examples can be run with cargo run --example <example name>.

Results:

Line

line

Circle

circle

Icon

icon


lib.rs:

StaticMap is a library for rendering images of tile based maps.

StaticMap uses a builder pattern for building maps, lines and markers.

To get started, build a map instance using [StaticMapBuilder][StaticMapBuilder] and find the tool builders in the [tools][tools] module.

Features:

  • Render a map to a PNG image.
  • Draw features on a map, such as:
    • Lines
    • Circles
    • PNG icons

Example

use staticmap::{
    tools::{Color, LineBuilder},
    StaticMapBuilder, Error,
};

fn main() -> Result<(), Error> {
    let mut map = StaticMapBuilder::default()
        .width(300)
        .height(400)
        .padding((10, 0))
        .build()?;

    let lat: &[f64] = &[52.5, 48.9];
    let lon: Vec<f64> = vec![13.4, 2.3];

    let red = Color::new(true, 255, 0, 0, 255);

    let line = LineBuilder::default()
        .lat_coordinates(lat.to_vec())
        .lon_coordinates(lon)
        .width(3.)
        .simplify(true)
        .color(red)
        .build()?;

    map.add_tool(line);
    map.save_png("line.png")?;

    Ok(())
}

Dependencies

~7.5MB
~136K SLoC