Skip to main content

Static Map 3

Static Map 3 is a fork of Static Map, a small, python-based library for creating map images with lines and markers.
The main purpose of this fork is to fix error handling on tile requests, to allow interrupting the execution (see PR on the original repository).

Changes since the fork are detailed in CHANGELOG.md.

Example

from staticmap3 import StaticMap, Line

m = StaticMap(300, 400, 10)
m.add_line(Line(((13.4, 52.5), (2.3, 48.9)), 'blue', 3))
image = m.render()
image.save('map.png')

This will create a 300px x 400px map with a blue line drawn from Berlin to Paris.

Map with Line from Berlin to Paris

Installation

Static Map 3 is a small library, all it takes is python and three python packages: Pillow, requests and cachecontrol.

To install Static Map 3:

pip install git+https://github.com/SamR1/staticmap.git

To use Filecache as storage backend for cache:

pip install git+https://github.com/SamR1/staticmap.git@main#egg=staticmap3[filecache]

The default directory for cache is .staticmap_cache. It can be changed by exporting the environment variable STATICMAP_CACHE_DIR.

Usage

Create a new map instance:

m = StaticMap(width, height, padding_x, padding_y, url_template, tile_size)
parameter description
width width of the image in pixels
height height of the image in pixels
padding_x (optional) minimum distance in pixel between map features (lines, markers) and map border
padding_y (optional) minimum distance in pixel between map features (lines, markers) and map border
url_template (optional) the tile server URL for the map base layer, e.g. https://tile.openstreetmap.org/{z}/{x}/{y}.png
tile_size (optional) tile size in pixel, usually 256

Add a line:

line = Line(coordinates, color, width))
m.add_line(line)
parameter description
coordinate a sequence of lon/lat pairs
color a color definition Pillow supports
width the stroke width of the line in pixel
simplify whether to simplify coordinates, looks less shaky, default is true

Add a map circle marker:

marker = CircleMarker(coordinate, color, width))
m.add_marker(marker)
parameter description
coordinate a lon/lat pair: e.g. (120.1, 47.3)
color a color definition Pillow supports
width diameter of marker in pixel

Add a polygon:

polygon = Polygon(coordinates, fill_color, outline_color, simplify)
m.add_polygon(polygon)
parameter description
coordinate a lon/lat pair: e.g. [[9.628, 47.144], [9.531, 47.270], [9.468, 47.057], [9.623, 47.050], [9.628, 47.144]]
fill_color a color definition Pillow supports
outline_color a color definition Pillow supports
simplify whether to simplify coordinates, looks less shaky, default is true

Samples

Show Position on Map

from staticmap3 import StaticMap, CircleMarker

m = StaticMap(
    200, 200, url_template='https://tile.openstreetmap.org/{z}/{x}/{y}.png'
)

marker_outline = CircleMarker((10, 47), 'white', 18)
marker = CircleMarker((10, 47), '#0036FF', 12)

m.add_marker(marker_outline)
m.add_marker(marker)

image = m.render(zoom=5)
image.save('marker.png')

Position IconMarker on a Map

Show Ferry Connection

from staticmap3 import StaticMap, Line

m = StaticMap(200, 200, 80)

coordinates = [[12.422, 45.427], [13.749, 44.885]]
line_outline = Line(coordinates, 'white', 6)
line = Line(coordinates, '#D2322D', 4)

m.add_line(line_outline)
m.add_line(line)

image = m.render()
image.save('ferry.png')

Ferry Connection Shown on a Map

Show Icon Marker

from staticmap3 import StaticMap, IconMarker

m = StaticMap(240, 240, 80)
icon_flag = IconMarker(
    (6.63204, 45.85378), './samples/icon-flag.png', 12, 32
)
icon_factory = IconMarker(
    (6.6015, 45.8485), './samples/icon-factory.png', 18, 18
)
m.add_marker(icon_flag)
m.add_marker(icon_factory)
image = m.render()
image.save('icons.png')

Ferry Connection Shown on a Map

Alternatives

With papermap there is also a spin-off project dedicated to print maps.

Licence

Static Map 3 is open source and licensed under Apache License, Version 2.0

The map samples on this page are made with OSM data, © OpenStreetMap contributors

Release files for staticmap3 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for staticmap3 0.2.0
File Size Uploaded
staticmap3-0.2.0.tar.gz 8.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for staticmap3 0.2.0
File Interpreter ABI Platform
staticmap3-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 17.5 kB

Release files / staticmap3-0.2.0.tar.gz

Download URL staticmap3-0.2.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5f35869b3754470b2fb8bc99977944fd0f0b12377a6217994699d5eefe32b11f
BLAKE2b-256 checksum
How to use checksums
fcd622105ed31c80721a0693313e5acbe51ab0469a01067285a9c5de9b439e99
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.2 CPython/3.14.3 Linux/6.18.12-1-MANJARO

Release files / staticmap3-0.2.0-py3-none-any.whl

Download URL staticmap3-0.2.0-py3-none-any.whl
Size 9.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1613fcc1d5c323ba192066772deed6797965f25668673ed9b95166296e6259cf
BLAKE2b-256 checksum
How to use checksums
063e9337828a60d120885f5cdefa2fa5365d0e0840c622018e32e850c5c95355
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.3.2 CPython/3.14.3 Linux/6.18.12-1-MANJARO

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page