Static map images
Static maps images (have the potential to) offer an easy way to embed maps on a webpage.
The idea is for web site developers to simply use an <img />
tag (in pure HTML or via a CMS). Its src attribute specifies the location of the map, the size of the image, the zoom level, the type of map, etc. When the webpage is displayed, the browser requests the image from the static map service and the map is displayed with no dynamic features, the same way as any other image.
Most of the options are open source, meaning you could host the service within your own webspace.
Approaches
- Of course you can also grab a static map image by simply taking a screenshot; instructions for this vary between operating systems.
- OSM's own Share panel's Image option also allows generating an image, but not as a permalinkable URL (for one-offs, and not for scripted use)
- The following services are available:
- Mapbox Static API and classic Static API - sign up for API key
- Geoapify Static Maps API - sign up for API key
- Tyler (github) - available as a "demo".
- osm-static-maps - nodejs library + self hosted option, with demo on heroku
- StaticMapLite staticMapLite + staticMapWizzard - Available but hosted only reluctantly. Looking unreliable. Referrer usage requirement.
- staticmap from komoot
- staticmapservice - a configurable web service based on staticmap
- Printmaps Static Map Generator (free for normal resolution, premium for high resolution)
- py-staticmaps - Python library for creating PNG+SVG maps with pin-style+image markers, geodesic polylines, polygons, circles.
- go-staticmaps - Go library and command line tool to render static map images using OpenStreetMap tiles.
- php-osm-static-api - PHP library to render static images using OpenStreetMap tiles.
- Map w/o JavaScript - create HTML code to embed a map using OpenStreetMap tiles.
- A few services used to exist, but were taken offline. These along with other "tile stitching" options can still be run and used locally or re-hosted somewhere:
- StaticMap
- Bigmap
- MapQuest/Open Static Maps API
- Static Maps API
- Not a service, but it seems that you can find the (old) python script by searching the web for some keyword combination: http://modestmaps.com/examples-python-ws/ ws-compose and ws-pinwin
- (check above list and move items out of it if known not to cause load)
- A local shell script (uses firefox screenshotting)
Comparison Matrix
Functionality | staticMapLite | Tyler | osm-static-maps | Geoapify Static Maps API | ||
---|---|---|---|---|---|---|
Status/Reliability | Gone | Gone | Looking unreliable (recently re-hosted but only reluctantly) |
Demo (inherently unreliable) |
Healthy maintained 2013-2020+ |
Healthy |
URL | http://staticmap.openstreetmap.de/ | http://tyler-demo.herokuapp.com | heroku hosted demo | Demo | ||
Map types |
|
|
|
|
|
|
Image types | gif, jpeg | jpeg, png | png | png | jpeg, png (lossless optimized) | jpeg, png |
Supported URL Parameters | ||||||
Google API | no | lat/lon/zoom | yes | lat/lon/zoom | yes | lat/lon/zoom/format/markers |
OSM Permalink | yes | yes | no | yes | yes | yes |
Support of Markers | ||||||
Markers | yes | yes | yes | no | Through geojson | yes |
Multiple Markers | yes | max. 10 | yes | no | Through geojson | yes |
Custom Markers | no | URL based | 3 styles | no | URL based | Generated by Geoapify Marker Icon API |
GUI | no | yes | staticMapWizzard | no | no | Playground |
Support of Path / Vectors / Polygons / Overlays | ||||||
Paths | yes | yes | no | no | Through geojson | no |
Polygons | yes | max. 4 | no | no | Through geojson | no |
Scale Bar | yes | no | no | no | yes | no |
Comparison of request parameters
Besides varying in supported features each implementation has its own request parameter syntax. If you are planning to use one of those, read the documentation that comes with it. Eventually some projects will adapt or implement compatibility modes.
OSM Scheme
|
Google Static Maps API
|
WMS Client getMap Request
|