Google Maps is the first mapping service that comes to mind for Android developers who are integrating mapping functionality. Google Maps has earned the trust of iOS and Android developers all around the world. They’re easy to integrate with APIs, and can serve so many use cases. However, some of our clients prefer to create custom maps for their location-based applications.
Mapbox is one of the largest providers of custom online maps for websites and mobile apps. They’ve proven themselves as a great solution for web applications including GitHub, Pinterest, Foursquare, and other popular companies.
We wanted to figure out if Mapbox is actually as great for mobile as it is for the web.
What is Mapbox?
Mapbox is a paid web-based platform that lets developers create maps with unique styles, hosted on Mapbox servers.
The vast majority of the data Mapbox is uses is openly available. Their data sources include OpenStreetMap, USGS, Landsat, Natural Earth, and OpenAddresses. The platform uses OpenStreetMap as their base map and lets developers add different markers, lines, polylines, and polygons, as well as layers from external sources (in GeoJSON, GPX, and other formats).
Since the source code of the Mapbox SDK is open, we were able to test e how it works on both Android and iOS platforms.
How is Mapbox different from Google Maps?
With Google Maps, all additional map information has to be added on the client side. This is not very convenient, because it's more resource intensive.
With Mapbox, you can add all the additional elements you need on the server. They’ll automatically appear in client apps. You can still add additional elements on the client side if you wish, but it’s not necessary.
How do Mapbox’s offline maps work?
Offline maps are gaining popularity. Google Maps is also moving in this direction by letting users save maps for offline access.
Mapbox supports offline maps as well. Their mobile SDKs, however, can only work with raster maps, which are basically maps divided into square tiles. The images for each tile and for each zoom level within that tile have to be stored in the map. To retrieve an image of a certain tile, you just need to download the pre-generated image from the database. The downside to this approach is memory consumption; you need to store a lot of large images.
Vector maps offers an alternative to raster maps. When you need to display a map in a vector format, an app can correctly render and scale it based on vector data. This requires more processing power on the mobile device, but significantly cuts down on memory consumption. For example, a map that occupies 1GB in a raster format may only consume 100MB of memory in a vector format.
Unfortunately, for the moment Mapbox mobile SDKs do not support vector maps. They do have their own open source vector format which they call Vector Tiles — but it only works with web-based maps. We hope that Vector Tiles comes to mobile in the future!
All things considered, is Mapbox Maps integration with your mobile app really such a good idea?
Read also: Travel apps development technology
What does Mapbox for Android or iOS actually offer?
Mapbox’s Android SDK is based on the OSMDroid project, which makes it easy to add maps from Mapbox to your project. You can check out their tutorial for more information.
But how do Mapbox maps on Android actually function? Maps with a selected style are downloaded from the server. But it turns out that added markers and additional layers will not be downloaded automatically along with the base map. So if you want additional map layers, you still have to implement it client-side, just like with Google Maps.
You can enable offline mode by uploading maps from local storage in the MBTiles format. You can create a map in this format with the help of TileMill. But you need to remember that maps in this format occupy a lot of space. For example, a map of a medium-sized European country can take up more than 1GB. Because of this, offline maps in the MBTiles format are only suitable if you need to display smaller regions without that many details (for example, a map of one region of a city).
At present, Mapbox has only one advantage over Google Maps — it supports map styles. As for its others features, Mapbox Android SDK is a somewhat modified version of the open source OSMDroid, a mapping engine built on top of OpenStreetMap. I must acknowledge, however, that Mapbox’s engineers are actively developing their SDKs, so we will probably (hopefully) see some missing functionality implemented in the near future.