Skip to content

fwcd/swift-static-map

Repository files navigation

Swift Static Map

Build Docs

A small, pure Swift library for generating static maps directly from OpenStreetMap tiles.

The implementation is based on a port of danielalvsaaker's staticmap library for Rust and supports both Linux and macOS.

Examples

Simple Map

StaticMap(center: .init(latitude: 51.5, longitude: 0))

Simple Map

Pins with a Central Location

StaticMap(
    center: .init(latitude: 51.5, longitude: 0),
    annotations: [
        .pin(coords: .init(latitude: 51.499, longitude: -0.001)).color(.white),
        .pin(coords: .init(latitude: 51.499, longitude: 0.001)).color(.blue),
        .pin(coords: .init(latitude: 51.5, longitude: 0)),
        .pin(coords: .init(latitude: 51.501, longitude: -0.001)).color(.magenta),
        .pin(coords: .init(latitude: 51.501, longitude: 0.001)).color(.gray),
    ]
)

Centered Pins

Freely Positioned Pins

StaticMap(
    annotations: [
        .pin(coords: .init(latitude: 58.8, longitude: -3.3)),
        .pin(coords: .init(latitude: 54.2, longitude: -4.5)),
        .pin(coords: .init(latitude: 52.5, longitude: -1.9)),
        .pin(coords: .init(latitude: 51.1, longitude: -2.3)),
        .pin(coords: .init(latitude: 51.5, longitude: 0.0)),
    ]
)

Free Pins

Labelled Pins

StaticMap(
    zoom: 5,
    annotations: [
        .pin(coords: .init(latitude: 53, longitude: -7)).label("Ireland"),
        .pin(coords: .init(latitude: 51.5, longitude: -2)).label("Britain"),
    ]
)

LabelledPins