osm-gps-map
A Gtk+ widget (and Python bindings) for displaying OpenStreetMap tiles.
Project maintained by nzjrs
Hosted on GitHub Pages — Theme by mattgraham
Download 1.2.1 archive
(Release notes for 1.2.1).
A Gtk+ widget (and Python bindings) that when given GPS co-ordinates, draws a GPS track, and points of interest on a moving map display. Downloads map data from a number of websites, including openstreetmap.org. The library has excellent performance and is currently used in a number of Gtk+ applications.


Currently supports a number of different mapping sources:
- OpenStreetMap (default)
- OpenTopoMap
- OpenCycleMap
- Maps-For-Free
- Google Maps / Satellite and Bing Maps (Virtual Earth)
It also has the following features:
- Intelligent, flexible and customizable caching of maps, including the ability to request a specific area of the map to be cached ahead of time
- Recording of points of interest on the map (and the ability to add arbitrary pixmaps at those points)
- Automatically draws a GPS track (a line showing the history of past added points)
- Automatic centering on new GPS points
- Support for multiple other tracks of co-ordinate points
- Adjustable Zoom
- Built in support for keyboard navigation
- Includes a set of examples
- Simple, flat API
- Support for showing additional display layers rendered on top of the map
- Optional on screen display (OSD)
- Proper map copyright attribution and user-agent usage to comply with various map requirements
Documentation
Install Instructions
osm-gps-map should be packaged by your distribution. On Debian, Ubuntu or similar, you can install the GTK+ library and its Python bindings like this:
sudo apt install libosmgpsmap-1.0-1 gir1.2-osmgpsmap-1.0 python3-gi
And if you want to build some application that depends on osm-gps-map, you can install the development files like this:
sudo apt install libosmgpsmap-1.0-dev
Installing From Source
To build from source on Debian or Ubuntu you will need:
sudo apt install build-essential autoconf automake libtool \
libgtk-3-dev libsoup-3.0-dev libgirepository1.0-dev
Then:
./autogen.sh && make && sudo make install
News
Changes in 1.2.1 (2026-08-15)
- Replace deprecated G_TYPE_INSTANCE_GET_PRIVATE and g_type_class_add_private (Patrick Salecker)
- Add python unit tests (Patrick Salecker)
- Fix python example addressing requiring map source (Jochen Sprickerhof)
- Fix setting custom map source (Patrick Salecker)
- Update catalog files (Davide Gessa)
- Make libsoup minimum version 2.42 (Hubert Kowalski)
- Manage segments across date change line (Paolo Benve)
- Remove unnecessary warning about 2nd setup (Tormod Volden)
- Add OpenTopoMap map source (Philipe Weyland)
- Port to libsoup-3 (Sébastien Noel)
- Fix pkg-config file (Sébastien Noel)
- Move libsoup-3.0 to Requires.private in pkg-config (Grimmauld)
- Make add_point a GObject Introspection method (loqs)
- Close PixbufLoader before get_pixbuf in unit tests; fixes Glycin test failure (loqs)
Download
You may download any of the following archives:
You can also clone the project with Git by running:
$ git clone https://github.com/nzjrs/osm-gps-map.git
A snapshot of master is also available as tar or zip.
License
Authors
- John Stowers
- Till Harbaum
- Alberto Mardegan
- Mark Cottrell
- Originally based on tangoGPS by Marcus Bauer
get the source code on GitHub : nzjrs/osm-gps-map