Software libraries
Libraries, also known as frameworks, components, modules, or software development kits (SDKs), contain reusable code that helps developers integrate OpenStreetMap into their websites or software applications without reinventing the wheel. Developers have written libraries for accessing and analyzing data, rendering maps, geocoding, and routing. These libraries are compatible with the Web and a wide variety of desktop and mobile platforms.
A library is primarily included in a larger application, rather than being run as a standalone tool. However, some of the libraries listed here also provide command-line tools to facilitate development. A standalone tool may be just as convenient as a library in some environments, particularly on the command line; see Software for a full listing.
The libraries listed here are actively maintained or are considered to be mature and complete. Libraries of historical interest can be found at Category:Discontinued software.
Libraries marked † are unmaintained or deprecated: their repository is archived, their maintainers have discontinued or replaced them, they depend on a service or platform that no longer exists, or their code had not changed for five years as of November 2026.
Language bindings for the OpenStreetMap 0.6 API
- Main article: Databases and data access APIs
The OpenStreetMap API is primarily for use by OpenStreetMap editors and similar applications. If you’re developing a website or end-user application, most likely you’ll want to use a higher-level framework, such as an interactive map library.
| Library | Platforms | Target languages | API | Overpass | License | Notes |
|---|---|---|---|---|---|---|
| osmapi | Android, Java | Java | yes | yes | LGPLv3 | Complete implementation of the API 0.6, including map data, traces, notes, changesets, user infos, overpass etc. |
| osmapi | Cross-platform | Python | yes | no | GPLv3 | |
| OsmApiClient | Cross-platform | C# .Net Standard 2.0 | yes | no | MIT | Complete supprt for all documented features of Osm's API v0.6 |
| osm-api-js | Cross-platform | JavaScript/Typescript | yes | no | MIT | Created when osm-request wasn't maintained, this is a smaller and simpler wrapper around the API that includes full Typescript types. |
| osmapiR | Cross-platform | R | yes | no | GPLv3 | |
| osmaR | Cross-platform | R | yes | no | GPLv2 | |
| osm-common † | Android, Java | Java | yes | yes | Apache 2 | Overpass, changeset servers |
| osmdata | Cross-platform | R | no | yes | GPLv3 | |
| osm_easy_api | Cross-platform | Python | yes | no | GPLv3 | Support for api and diff files |
| osm-request | Cross-platform | JavaScript | yes | no | MIT | A bit more powerful than osm-api-js but also more complicated and lacking Typescript. |
| overpy | Cross-platform | Python | no | yes | MIT | |
| Rosemary † | Cross-platform | Ruby | yes | no | MIT | |
| Services_OpenStreetMap | Cross-platform | PHP | yes | no | BSD | Also allows access to user details. Went through PEAR PePr process |
† Unmaintained or deprecated.
Processing OpenStreetMap data
- Main article: Converting map data between formats
- Main article: :Category:File Converters
These libraries parse or convert raw OpenStreetMap data into other file formats or import the data into databases.
| Library | Platforms | Target languages | License | Notes |
|---|---|---|---|---|
| Atlas | Cross-platform | Java, Python | BSD 3-Clause | A tool to represent network-navigable OSM data in memory and to run data integrity checks at scale using Spark |
| BasicOSMParser † | Cross-platform | Java | GPLv3 | A XML data parser to manipulate OSM objects in Java, also able to do CSV exports |
| Cosmetyc | Cross-platform | OCaml | CeCILL-C | Parsing and outputing OSM XML and GeoJson formats, basic manipulation of data, coordinate conversion |
| GeoDesk | Cross-platform | Java, Python, C++ | Apache 2, LGPL 3.0 | Fast and storage-efficient database engine for OSM data. Able to export in various formats (GeoJSON, CSV, WKT, etc.) |
| Geow † | Cross-platform | Scala | Apache 2 | Lightweight framework for processing OSM data |
| gOSMonaut | Cross-platform | Go | MIT | PBF file parser that delivers nested entities |
| Gosmparse † | Cross-platform | Go | MIT | Parsing OpenStreetMap PBF files at speed |
| LibOsm † | Cross-platform | C++ | GPLv3 | Store/update OSM data in an SQLite database |
| LibOSM † | Cross-platform | Java | GPL | |
| libosmium | Cross-platform | C++ | BSL-1.0 | Toolkit and framework for working with OSM data |
| libosmscout | Cross-platform | C++, Java | LGPL | Raw data parsing and preprocessing, database functionality |
Mailwoman (@mailwoman/osm) |
Node.js | TypeScript | AGPLv3 or commercial | Builds a per-country SQLite database of address points from a PBF extract: addr:housenumber nodes, building centroids and addr:interpolation ways. The resulting database is ODbL.
|
| Openstreetmap h3 | Cross-platform | Java | Apache 2 | High performance tool for importing PBF into PostGIS databases or to Apache Parquet, Arrow(BigData: Spark,Hadoop) |
| osm2geojson | Cross-platform | Python | MIT | OSM XML (and Overpass XML/JSON) to GeoJSON converter |
| OSM2Hive † | Cross-platform | Hive | Apache 2 | OSM data importer for Hive / Hadoop clusters |
| osm4j | Cross-platform | Java | LGPLv3 | |
| osm4scala | Cross-platform | Scala | MIT | Lightweight and high performance Scala library focus in parse PBF2 OSM files as iterators. |
| osm-admin | Cross-platform | Rust, Docker | MIT OR Apache-2.0 | Fast import and export of PBF into and from apidb databases |
| osm-common † | Android, Java | Java | Apache 2 | osm.xml and osc.xml parsing and processing |
| OSMemory | Cross-platform | Java | LGPLv3 | Library for validators with o5m fast reader. It loads data to memory that allow to use osm data without PostgreSQL |
| osm-io | Cross-platform | Rust | MIT OR Apache-2.0 | Fast PBF read/write library |
| OSMJSON.Net † | Cross-platform | C# .Net | Apache 2 | OSMJSON.Net is a library containing the necessary types for serializing and de-serializing of OSM JSON |
| OSMKit † | iOS, macOS | Objective-C | MIT | Parses and stores OSM data in a spatialite database. |
| OSMLib † | Cross-platform | Ruby | Public domain | osm to shapefile conversion |
| Osm.ml | Cross-platform | OCaml | WTFPL | Parses the basic objects of a .osm file |
| OSMonaut † | Cross-platform | Java | MIT | Parser for binary OSM files that always returns complete entities |
| Osmosis | Java, Android | Java | Public domain | Inactive since 2018 |
| Osm-parquetizer † | Cross-platform | Java | Apache 2 | Converts PBF files to Parquet, making the OSM data BigData friendly (Hadoop/Spark) |
| osmpbf | Cross-platform | C++ | LGPLv3 | Based on iterator concept |
| osmpbf | Cross-platform | Go | MIT | PBF file format parser |
| osm-read † | Node.js, Web | JavaScript | LGPLv3 | OpenStreetMap XML and PBF data parser for Node.js and the browser |
| Osmread † | Cross-platform | Python | MIT | Simple library for reading XML and PBF data files |
| OsmTagsTranslator | Windows | C# .Net | MIT | Use SQLite queries to translate element tags (string manipulation or joining with look-up tables) |
| osmtogeojson | Cross-platform | JavaScript | MIT | OSM XML to GeoJSON converter |
| parallelpbf | Cross-platform | Java | GPLv3 | PBF format multithreaded reader written in Java |
| pbf2osm † | Cross-platform | C | GPLv3 | Converts pbf files back to osm based XML files |
| Pbfhogg | Linux | Rust | MIT OR Apache-2.0 | Fast PBF read/write library and CLI. Sequential, parallel and pipelined decoding; planet-scale on a 32 GB host. Similar scope to osmium-tool, cross-validated against it. |
| PyOsmium | Cross-platform | Python | BSD 2-Clause | Process PBF and OSM XML files. Toolkit and framework for working with OSM data. |
| Smrender | Cross-platform | C | GPLv3 | Modular OSM data processing |
| spark-osm-datasource † | Cross-platform | Scala | GPLv3 | PBF format datasource for Apache Spark |
| tdewolff/geo | Cross-platform | Go | MIT | High-performance parser and geometry extractor for OSM PBF files. |
† Unmaintained or deprecated.
Generating map images
- Main article: Rendering
Most client-side static and interactive map libraries display static map images or raster tiles generated on the server side. These server-side libraries are used by tile servers that need to generate those raster tiles:
| Library | Platforms | Target languages | License | Notes |
|---|---|---|---|---|
| Kartograph † | Cross-platform | Python | LGPL | Kartograph is a simple and lightweight framework for building interactive map applications without any other mapping service. It was created with the needs of designers and data journalists in mind. |
| Mapnik | Windows, macOS, Linux | Python, JavaScript, C++ | LGPL | The most popular server-side 2D map renderer. Requires PostgreSQL and various C++ libraries. Designed to be fast and is suitable for tile generation on high-end servers, but it isn't particularly easy to set up. |
| node-mapbox-gl-native † | Node.js | JavaScript | BSD | Renders Mapbox Vector Tiles using OpenGL; supports overlays, GeoJSON, and Mapbox GL styles |
| pgmapcss † | Cross-platform | PostgreSQL | AGPLv3 | A library for PostgreSQL/PostGIS which works between an osm2pgsql-based database and Mapnik (and maybe other renderers) |
| Smrender | Cross-platform | C | GPLv3 | Offline paper chart rendering |
| TileMan † | Linux | Lua | GPLv3 | Framework for serving OSM based tiles |
† Unmaintained or deprecated.
Displaying static map images
- Main article: Rendering
These client-side libraries fetch individual static map images from a tile server without adding an interactive UI around the images. In websites and applications, static map images are sometimes more appropriate than full map widgets, either due to performance concerns or because the map simply doesn’t need to be interactive.
| Library | Platforms | Target languages | License | Notes |
|---|---|---|---|---|
| A-Frame | WebBrowser | JavaScript | MIT | Places Maps (Bit/Vector) into a 3D environment |
| Mapbox Android Services | Android, Java | Java | MIT | Connects to Mapbox’s Static API |
| Mapbox Python SDK † | Cross-platform | Python | MIT | Connects to Mapbox’s classic Static API |
| MapboxStatic.swift | iOS, macOS, tvOS, watchOS | Swift, Objective-C | BSD | Connects to Mapbox’s Static API |
† Unmaintained or deprecated.
Displaying interactive maps
- Main article: Rendering
- Main article: Deploying your own Slippy Map
Interactive maps, also known as slippy maps on the Web, are the most common way of integrating OpenStreetMap into a website or application. These client-side libraries can display OpenStreetMap-based maps directly. Most of them display raster or vector tiles generated by a tile server, while some render raw OpenStreetMap data fetched directly from an API. A number of server-side libraries make it easier to insert client-side map widgets in webpages.
Web maps
Actively maintained libraries are listed at Deploying your own Slippy Map#JavaScript libraries.
Unmaintained web map libraries include Cartagen, Kartograph, Kothic JS, Modest Maps and Polymaps.
Native widgets
| Library | Platforms | Target languages | Raster | Vector | License | Notes |
|---|---|---|---|---|---|---|
| BruTile | Cross-platform | Silverlight, C# | yes | no | LGPL | |
| Carto Mobile SDK | Android, iOS, Windows | Java, Objective-C++, Swift, C# | yes | yes | BSD | |
| CartoType | iOS, Android, Windows, Mac OS, Unix, Qt | C++, .NET, Java, Objective C, Swift, C# | no | yes | Proprietary | Offline or online map rendering using Open GL ES or CPU rendering; can use OSM and other data sources including ESRI shapefiles; provides routing, turn by turn navigation, geocoding, address search and full-text search. |
| COSMCtrl | Windows | C++ | yes | no | Freeware | MFC control |
| flutter_map (fleaflet) | iOS, Android, Windows, Mac, Linux, Web | Dart (with the Flutter framework) | yes | 3rd party plugin | BSD 3-Clause | A versatile mapping package for Flutter that supports showing raster tiles from any source with a wide variety of plugins to add functionality. |
| flutter_osm_plugin | Android, iOS, web | Dart (with the Flutter framework) | yes | no | MIT | |
| GLMap | iOS, Android | Objective-C, Swift, Java | yes | yes | Proprietary | Offline or online vector map rendered on device using OpenGL ES |
| Halcyon † | Flash | ActionScript | yes | yes | WTFPL | Rendering library developed by Richard Fairhurst and used within Potlatch 2 |
| JMapViewer | Java SE | Java | yes | no | GPLv2 | |
| JXMapViewer2 | Java SE | Java | yes | no | LGPLv3 | Swing control |
| libchamplain † | Linux/GNOME | C, Perl, Python | yes | no | LGPL-2.1-or-later | GNOME/GTK3 widget. Superseded by libshumate. |
| libosmscout | Cross-platform | C++, Java | yes | yes | LGPL | Offline vector map drawing (based on preprocessed data) |
| libshumate | Linux/GNOME | C, Rust, | yes | yes | LGPL-2.1-or-later | GNOME/GTK4 widget |
| LocationMapViewer | Android | Java | yes | no | GPLv3+ | Android-Intent; "geo:"-Uri; gpx and kml file/URL |
| Mapbox Android SDK † | Android | Java, Kotlin | yes | yes | BSD | Displays Mapbox Vector Tiles in an interactive map using OpenGL ES |
| Mapbox Cordova Plugin | iOS, Android | JavaScript | yes | yes | MIT | Cordova plugin wrapping the Mapbox iOS SDK and Mapbox Android SDK |
| Mapbox iOS SDK † | iOS | Objective-C, Swift, Interface Builder | yes | yes | BSD | Displays Mapbox Vector Tiles in an interactive map using OpenGL ES |
| Mapbox macOS SDK † | macOS | Objective-C, Swift, Interface Builder, AppleScript | yes | yes | BSD | Displays Mapbox Vector Tiles in an interactive map using OpenGL |
| Mapbox Qt SDK † | Cross-platform | C++, QML | yes | yes | BSD | Displays Mapbox Vector Tiles in an interactive map using OpenGL and Qt |
| Mapbox SceneKit SDK | iOS | Objective-C, Swift | yes | yes | ISC | Provides data for generating custom 3D scenes in SceneKit |
| Mapbox SDK for Xamarin † | Android, iOS | C# | yes | yes | BSD | Xamarin component wrapping the Mapbox Android SDK and Mapbox iOS SDK |
| Mapbox Unity SDK | Cross-platform | C# | yes | yes | Apache | Provides data for generating custom 3D scenes in Unity |
| MapLibre Native (wiki) | Cross-platform | Objective-C, Swift, Java, Kotlin, C++ | yes | yes | BSD | Interactive raster and vector tiles on mobile and desktop; tile and static map rendering on the server. |
| mapsforge | Android, Java | Java | ? | yes | LGPLv3 | OSM based replacement for Android's MapView class for offline tile sources and overlays. Java ME and Java SE. |
| map::slippy | Cross-platform | Tcl | yes | no | BSD-style | Tcl/Tk widget |
| mapsui | desktop, mobile, server | C# | yes | no | MIT | Uses BruTile |
| Marble | Windows, macOS, Linux | C++, Python, QML | yes | yes | LGPL | Qt widget |
| NativeScript Mapbox[1] | iOS, Android | XML, JavaScript | yes | yes | MIT | NativeScript plugin wrapping the Mapbox iOS SDK and Mapbox Android SDK |
| Navmii Mobile SDK | iOS, Android | ? | ? | yes | Proprietary | Unclear what is offered; documentation is unavailable without an account |
| OpenMapView | Android | Kotlin | yes | no | MIT | A modern, Kotlin-first, MIT-licensed MapView replacement for Android — powered by OpenStreetMap. Drop-in compatible with Google MapView |
| OSMBonusPack | Android | Java | yes | no | LGPL with exceptions | Addon for osmdroid: Markers, Bubbles, Routes, Directions, KML and more... |
| osmdroid † | Android | Java | yes | no | Apache 2 | OSM based replacement for Android's MapView (v1 API) class. Supports online and offline tile sources and overlays for plotting icons, tracking location, drawing shapes. |
| osm-gps-map | Cross-platform | C, Python, JavaScript | yes | no | GPLv2 | GTK mapping widget drawing a GPS track, and points of interest on a moving map |
| OsmSharp † | iOS, Android, Windows Phone | C# | no | yes | GPLv2 or commercial | Offline vector map rendering |
| QMapControl | Cross-platform | C++ | yes | no | LGPL | Qt control |
| QtLocation | Cross-platform | C++, QML | yes | yes | LGPLv3 or commercial | Qt module for mapping, navigation, geocoding and places of interest with pluggable architecture to provide geoservices. Supersedes QtMobility.Location. OSM services for mapping, geocoding, routing and places now included by default. |
| Qt Mobility Geoservices Extras † | Cross-platform | C++, QML | yes | no | LGPLv2.1 | |
| QuartzMaps | iOS | Objective-C | yes | yes | Proprietary | Slippy Map and Vector Map rendering engine for iOS |
| React Native Mapbox GL † | iOS, Android | JSX | yes | yes | BSD | React Native component wrapping the Mapbox iOS SDK and Mapbox Android SDK |
| Tangram ES | Android, iOS, Linux, macOS | C++ | yes | yes | MIT | 2D and 3D map renderer using OpenGL ES |
| Tangram NG | Cross-platform | C++ | yes | yes | MIT | Actively maintained fork of Tangram ES adding 3D terrain and other features |
| ti.osm | Android (Appcelerator Titanium) | JavaScript | yes | no | MIT | Appcelerator Titanium wrapper for osmdroid |
| WhirlyGlobe-Maply | iOS, Android | Objective-C, Swift, Java | yes | yes | Apache 2 | Geospatial display kit for iOS and Android based on OpenGL ES. Implements a 2D map and a 3D globe and can handle image base maps and tiled vector maps based on OSM data. |
† Unmaintained or deprecated.
Additionally, some client-side libraries can be used with OpenStreetMap tiles, even if they’re primarily intended for other uses:
Forward and reverse geocoding
- Main article: Geocoding
These tables include both server-side and client-side libraries.
Web
| Library | Platforms | Target languages | Forward | Reverse | License | Notes |
|---|---|---|---|---|---|---|
| Leaflet Control Geocoder | Web (Leaflet) | JavaScript | yes | yes | BSD 2 | Search box for Leaflet maps; supports Nominatim, Photon, Pelias and other services. |
| leaflet-geosearch | Web (Leaflet) | JavaScript | yes | ? | MIT | Search control for Leaflet maps; providers include OpenStreetMap (Nominatim), Photon and Pelias. |
| leaflet.photon | Web (Leaflet) | JavaScript | yes | ? | Apache 2 | Search-as-you-type box for Leaflet maps, backed by a Photon server. |
| Mailwoman | Node.js, Web | TypeScript | yes | yes | AGPLv3 or commercial | Address parser and geocoder library for Node.js and the browser. Also serves Nominatim-, Photon- and libpostal-compatible HTTP APIs. |
† Unmaintained or deprecated.
Native and server
| Library | Platforms | Target languages | Forward | Reverse | License | Notes |
|---|---|---|---|---|---|---|
| Geocoder | Cross-platform | Ruby | yes | yes | MIT | Ruby gem; supports Nominatim, Photon and Pelias among many services. |
| Geocoder PHP | Cross-platform | PHP | yes | yes | MIT | Provider-based library; Nominatim, Photon and Pelias providers among many others. |
| geopy | Cross-platform | Python | yes | yes | MIT | Client for many geocoding services, including Nominatim, Photon and Pelias. Requires a custom user agent for Nominatim. |
| Gisgraphy † | Cross-platform | Java | yes | yes | LGPLv3 | Geocoding/reverse geocoding, fulltextsearch, find nearby |
| mapsforge | Android, Java | Java | yes | yes | LGPLv3 | POI indexing and search. Java ME and Java SE. |
| node-geocoder | Node.js | JavaScript | yes | yes | MIT | Supports Nominatim among other services. |
| Nominatim.API | Windows,Cross-platform | C# | yes | yes | MIT | Library for utilizing geocoding (forward and reverse), in addition to address lookups, with the Nominatim HTTP API. Targets .NET Standard 2.0. Available on NuGet: Nominatim.API |
| nominatim-api | Cross-platform | Python | yes | yes | GPLv3+ | Nominatim's own search frontend as a library. Queries a local Nominatim database directly; not for use against public web services. |
| osm-common † | Android, Java | Java | yes | yes | Apache 2 | Nominatim. Not updated since 2021. |
| osm-reverse-geocoder † | Cross-platform | PL/pgSQL | no | yes | MIT | Simple address reverse geocoding |
| Pelias Android SDK † | Android | Java | yes | yes | Apache | Client for a Pelias API. Written for Mapzen Search, which closed in 2018; not updated since 2017. |
| Pelias iOS SDK † | iOS, macOS | Swift | yes | yes | Apache 2 | Client for a Pelias API. Written for Mapzen Search, which closed in 2018; not updated since 2017. |
| Services_OpenStreetMap | Cross-platform | PHP | yes | yes | BSD | Includes partial support for querying Nominatim servers. Went through PEAR PePr process |
| Traccar Geocoder | Cross-platform | Rust / C++ | no | yes | Apache 2 | Hyper-optimized self-hosted reverse geocoder with sub-millisecond query latency. C++ builder parses OSM PBF files into a compact binary index using S2 geometry cells. Rust server memory-maps the index and serves a Nominatim-compatible API. Docker support with automatic HTTPS. |
† Unmaintained or deprecated.
Navigation
- Main article: Routing
This table includes both server-side libraries and client-side libraries:
| Library | Platforms | Target languages | License | Notes |
|---|---|---|---|---|
| CartoType | Windows, iOS, Android, macOS, Unix | C++, .NET, Java, Objective-C, Swift, C# | Proprietary | offline routing for drivers, cyclists, walkers; configurable routing profiles; can export routes and instructions |
| Ferrostar | Cross-platform (iOS, Android, and Web officially supported) | Rust, Swift, Kotlin, and TypeScript | BSD | Navigation SDK with modern composable UI and a consistent API across all platforms. Ships with a request generator for Valhalla, and response parser for "OSRM-like" JSON. |
| GraphHopper | Cross-platform | Java, Objective-C, Swift | Apache 2 | Routing engine for car, bike and more. Can be used as web service, android library, iOS library or Java library. |
| libosmscout | Cross-platform | C++, Java | LGPL | offline routing (based on preprocessed data) |
| Mapbox Android Services | Android, Java | Java | MIT | Connects to Mapbox’s Directions API for route data |
| Mapbox Directions for Swift | iOS, macOS, tvOS, watchOS | Swift | ISC | Connects to Mapbox’s Directions API for route data |
| Mapbox GL Directions | Web | JavaScript | MIT | Plugin for Mapbox GL JS that connects to Mapbox’s Directions API for route data |
| Mapbox JavaScript SDK | Web, Node.js | JavaScript | MIT | Connects to Mapbox’s Directions API for route data |
| Mapbox Navigation SDK for Android | Android | Java, Kotlin | Proprietary | Embeds a turn-by-turn navigation UI with voice guidance into an Android application |
| Mapbox Navigation SDK for iOS | iOS | Swift | Proprietary | Embeds a turn-by-turn navigation UI with voice guidance into an iOS application |
| Mapbox Python SDK † | Cross-platform | Python | MIT | Connects to version 4 of Mapbox’s Directions API for route data |
| Mapbox Ruby SDK † | Cross-platform | Ruby | MIT | Connects to Mapbox’s Directions API for route data |
| Mapbox Unity SDK | Cross-platform | C# | Apache | Connects to Mapbox’s Directions API for route data |
| Maplibre Navigation SDK for Android | Android | Java, Kotlin | MIT | Embeds a turn-by-turn navigation UI with voice guidance into an Android application |
| Maplibre Navigation SDK for iOS | iOS | Swift | MIT | Embeds a turn-by-turn navigation UI with voice guidance into an iOS application |
| mapsforge | Android, Java | Java | LGPLv3 | Route planning and navigation. Java ME and Java SE. |
| Mapzen iOS SDK † | iOS | Swift, Objective-C | Apache | Connects to Mapzen Turn-by-Turn (powered by Valhalla) via OnTheRoad for iOS |
| Navmii Mobile SDK | iOS, Android | style="background: var(--background-color-interactive, #EEE); color: var(--color-base, black); vertical-align: middle; text-align: center; " class="table-Unknown" | ? | Proprietary | |
| On The Road † | Android | Java | Apache | Connects to Mapzen Turn-by-Turn (powered by Valhalla) |
| openrouteservice | Cross-plattform, Web | Java, R, Python, Javascript .. | LPGL | routing/directions, isochrones, geocoding, maps, time-distance matrix, accessibility etc. many traffic profiles |
| Open Source Routing Machine | Linux, macOS, FreeBSD, Node.js | C++, JavaScript | BSD | Routing |
| OpenTripPlanner | Web | Java | GPL | Multimodal routing for public transit, bicycle, pedestrian, and car. |
| OSMNavigation † | Cross-platform | Java | GPL | |
| OsmSharp | iOS, Android, Windows Phone | C# | GPLv2 or commercial | Offline routing |
| pyroutelib2 | Cross-platform | Python | GPLv3+ | Routing with custom vehicles and displaying the result |
| Routino | Linux, macOS, Windows | C | AGPLv3 | Flexible router with web interface and routing data analyser |
† Unmaintained or deprecated.
Code snippets
The following links provide source code that’s too small for a library but nevertheless useful:
- Batch Upload - Scripted GPX upload to OSM
- Slippy map tilenames - getting the right Tiles for a geoposition
- Java Access Example - a simple java example how to access either the OpenStreetMap API or the overpass API from within Java
See also:
Other developer tools
- Main article: GIS software
General-purpose GIS libraries are often used in conjunction with OpenStreetMap-specific libraries to work with geographic data:
- PROJ.4 - Geo Projection Conversion lib with multiple bindings
- GDAL - Geo Raster image formats lib
- OGR - Geo Vector data formats lib
- PostGIS - The leading Geo enabled Database
- spatialite - sqlite extension, fully fledged spatial db
- Mapbender - Another more GIS focused web map lib
- Geotools -Java GIS Toolkit
- GIS-Python lab - Python GIS Toolkit
- k3b-geoHelper - java lib to parse gpx and kml files and en/decode geo-uris. Works with Android, too
- Pic4Carto.js - JavaScript library for open-licensed street pictures retrieval (which can be used for photo mapping, tutorial)
By Language
External links
- Tutorial for building a own Navi
- Tutorial for extending OpenLayers for touch gestures of mobile browsers
- How to work on OSM data using Haskell
- OSGeo.org - Home of popular OSS GIS tools
- GIS software catalogue at GISWiki
- FreeGIS - GIS Software catalogue