explaingit

mapsme/omim

4,606C++Audience · developerComplexity · 5/5LicenseSetup · hard

TLDR

Source code for MAPS.ME, an offline maps app for iPhone and Android that downloads OpenStreetMap community data to the device so maps work without any internet connection.

Mindmap

mindmap
  root((repo))
    What it is
      Offline maps app
      iOS and Android
      OpenStreetMap data
    Map pipeline
      Raw OSM data
      Python processing tool
      MWM binary format
    Tech
      C++ core
      Qt desktop build
      Bundled libraries
    Features
      Works without internet
      Public transport display
      Custom map styles
    License
      Apache 2.0
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build and run the MAPS.ME offline maps app from source for iOS or Android

USE CASE 2

Use the included Python tool to compile raw OpenStreetMap data into the compact MWM map file format

USE CASE 3

Contribute bug fixes or new features to the open-source offline maps codebase

USE CASE 4

Study how a large-scale C++ mobile mapping application is architected across iOS and Android

Tech stack

C++PythonQtiOSAndroidOpenStreetMap

Getting it running

Difficulty · hard Time to first run · 1day+

Requires Qt 5, a C++ compiler, and platform-specific SDKs for iOS or Android, most libraries are bundled but the full build setup is complex.

Free to use and modify for any purpose including commercial projects, as long as you include attribution and keep the original license notice.

In plain English

MAPS.ME is an offline maps application for iPhone and Android phones. It uses map data from OpenStreetMap, a community-built geographic database where volunteers contribute roads, buildings, points of interest, and other location data worldwide. Because the maps are downloaded to the device, MAPS.ME works without an internet connection, which makes it useful for travel in areas with poor or expensive mobile data coverage. The source code covers both the mobile apps and the tooling needed to build the map files the apps consume. Map data goes through a processing pipeline before it lands on a phone: raw OpenStreetMap data is compiled into a compact binary format called MWM using a Python tool included in the repository. The visual styling of maps is also compiled separately from a stylesheet format, and changes to styles require rebuilding the map files to take effect. The project is written primarily in C++. Development relies on Qt 5 for the desktop build, while most other third-party libraries are bundled directly in the repository. The team used Xcode for iOS and Qt Creator for other platforms, though neither is required. A MAPS.ME Designer tool is mentioned for working on map styles without a full rebuild cycle. Contributors must sign a contributor agreement before their code is accepted. Bug reports and feature requests go through the GitHub issue tracker. The codebase also has experimental public transport display support that can be turned on separately. The license is Apache Public License 2.0, with third-party components carrying their own licenses listed in a separate notices file. Copyright is held by My.com B.V., part of Mail.Ru Group.

Copy-paste prompts

Prompt 1
How do I build MAPS.ME from source for iOS using Xcode and what system dependencies do I need?
Prompt 2
Walk me through converting raw OpenStreetMap data into the MWM binary format used by MAPS.ME.
Prompt 3
How does MAPS.ME handle offline map rendering and which C++ libraries does it use for display?
Prompt 4
What is the contributor agreement process for MAPS.ME and how do I submit a code change?
Prompt 5
How do I use MAPS.ME Designer to modify map styles without running a full map data rebuild?
Open on GitHub → Explain another repo

← mapsme on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.