Best way to use OSM in mobile app


I’m going to create a mobile app with OSM integration. It has some specific requirements, so I’m looking for the best solution.

Application will use maps only in offline mode. Moreover, it will need only a few (20-30) locations, size of the big city each (but it must support having these locations simultaneously on one device with no size limitation, e.g. as MAPS.ME does). It also going to be a commercial app, users will pay for content (not for maps themselves).

The end goal is to match these requirements along with all possible license conditions for the lowest price possible.

As I understand, I need to get rendered tiles for chosen regions somewhere, and an SDK to handle them on a device. Is it right that I can take Mapbox Mobile SDK and buy OpenTileMaps tiles for my regions (here:, compose them in my app like in this example: and use them without paying any additional fees? If No, could you please recommend me something?

Thank you!

Have you looked at MapsForge?

Rather than messing with tiles - which explode in size requirement dramatically as you increase zoom level - you might like the space efficiency of the vector format that MapsForge offers.

I can’t say more, as I have no direct experience with it except as a user.

Thank you! As I see, MapsForge is Android-only, but iOS support is also crucial for me. Don’t you know any cross-platform solutions?

From the Mapsforge wiki article:

There’s even an app listed near the bottom that is using Mapsforge on iOS.

Well, the only app is Vectorial Map, and it looks like they have implemented custom rendering engine. Not an easy way at all.
Speaking about “Android-only” I meant mobile platforms of course.

The best solution I’ve found after few days of research is project. Their maps are paid, but much cheaper then Mapbox and Carto, and optimized for offline usage.

If somebody knows something better, please tell me.
Thank you, guys :slight_smile:

Source code of and osmand is available at

Yes, because the forum is only one part of OpenStreetMap for discussions and no market place. So it’s obviously the wrong place to download apps.

Maybe you have access to google or apple app stores? Then you can search for “osm” and you’ll find a lot of apps using our data. Shouldn’t be so hard to do?

OSM has no official app nor commercial services, we offer just the data.

Based on free OpenStreetMap data, it is possible to create beautiful, accurate and fast maps - with native vector rendering, and live customizable styling - directly on a mobile device. The native mobile rendering is fast and response to user touch interaction immediately.

The map tiles can be easily displayed in custom native mobile applications on Android or iOS or other platforms. The developers can load the map tiles online from a TileServer of a choice or implement offline maps in the app - displaying the maps from downloaded or bundled tile extracts.

Native mobile apps8
Our OpenStreetMap vector tiles are encoded in the widely used and openly documented vector tile format. This means the tiles are compatible with all software tools implementing this format specification. The style definition for the design of the map may vary in different tools - our open styles are implemented in GL Style.

The open-source Mapbox SDK for iOS and SDK for Android provides the most natural way how to display the tiles and styles in a mobile app natively.

The source code of the Mapbox SDKs is available at GitHub.

There are alternative open-source SDKs for native mobile apps as well, for example, TangramES or Carto/Nutiteq SDK.

Sample app for Android and iOS
To demonstrate the capabilities of the SDK and show the performance of OpenMapTiles vector tiles made from OpenStreetMap we have developed a sample mobile app for both Android and iOS.

These apps shows the vector map tiles displayed from a custom tile server, so you can choose a tile hosting service or implement your own. Map tiles can be also bundled with the mobile app or users can download a tileset for a region of their choice.

Displaying of the tiles directly from MBTiles, running in an offline environment, requires patching of Mapbox SDKs. We offer the complete source code of the demo mobile app to the interested developers to speed up the start of the development of their own commercial apps.

Packed web applications8
An alternative way for the development of multiplatform mobile apps is a use of the existing web viewers while using HTML, CSS, and JavaScript and packaging the web applications into native applications with a framework like Apache Cordova.

The modern mobile phones support WebGL and maps are acceptably performant, however native apps are still faster and ensure better compatibility with various devices.

While developing the mobile apps in JavaScript users can also use native components such as Cordova app React Native.

Desktop and embedded apps8
For the development of native desktop applications and software for hardware appliances with embedded mapping systems powered by Linux and running completely offline with our vector tiles, one can use the open-source QT SDK.

Mapbox GL Native does not compile (yet) on Microsoft Windows. So for fully multiplatform desktop apps with vector tile maps inside, the embedded web window (possibly with CEF - Chromium Embedded Framework and enabled WebGL support) is still the best option.

thank you for sharing!!

Tangram-es, a multi-platform vector-map-tiles rendering library supports local MBTiles (see So, you can download all those map tiles you need (programmatically) and store them in a local sqlite database in MBTiles format, then let the map stylesheet point to the local database file instead of the online tileserver.

Their repo is at

I am using this lib for my app StreetComplete.

Apart from the above-mentioned libraries, you may also find Graphhopper useful if you plan to use routing (Especially offline routing) with your android app. It is easy to integrate with Mapsforge.