Mapbox SDK — Limitations with Offline features
This article is for those who intend to use the Mapbox SDK (a freemium and open-source SDK) to build their next Map App with Offline (no internet) functionality.
I am the developer for the Offroad Trail Guide mobile app which allows 4WD enthusiasts to find offroad trails near them. When looking for a mapping SDK I was searching for one that had a lot of flexibility with loading custom data. It wasn’t until my second year in development that I switched to the Mapbox GL SDK when it became stable and supported one of my most necessary features: Offline Maps.
Offline Maps is the broad term for: “The ability to store map data to a device so that if internet connectivity is lost you don’t have any app hiccups and it is seamless for the user.” Here Mapbox excels. With their vector maps and data and it is completely seamless experience for the user. HOWEVER…you should know the following:
When I began development with the Mapbox SDK there was a Free plan, a $50/mo, a $499/mo, and an Enterprise. The free plan has all the features you need to get going and I assumed that I would upgrade to the $50/mo plan after releasing my App with the new Mapbox SDK. By the time I launched, there no longer was a $50/mo plan and Mapbox seems to be solely focused on the enterprise customers. Why is this important?
The biggest factor is Mapbox’s limitations with offline tiles. The Tile Ceiling is the maximum amount of map tiles allowed to be stored on any one device.
The tile ceiling is set to 6,000 tiles by default but can be raised with an enterprise plan.
The last two words are the important bit. Enterprise plan. How much is their Enterprise plan? They don’t tell you. It’s surely more than their $499/mo (Pro).
How much is 6,000 tiles you ask?
Six thousand tiles covers a region roughly the size of Greater London within the M25 at zoom levels 0–15 or the contiguous United States at zoom levels 0–9. The size of these tiles on disk will vary according to the selected style.
Here’s a real-life example. Soon I’m driving to Southern Colorado, like many of my users, for a 5-day off-grid camping trip. I will have no internet connectivity during that time.
Using the Mapbox Offline Tile Count Estimator this trip would net me a total of 8,948 required tiles. I need all the way to zoom level 15, if I’m going to be able to see all the small, non-major roads, and not get lost!
BUT WAIT, THERE’s MORE!
When you tell the SDK you want to download an “Offline Pack”, you specify which Map Style you want to use. Street, Satellite, one of your custom styles build with the awesome Mapbox Studio, etc. So if I wanted one standard and one satellite — out of the question.
BUT WAIT, THERE’s MORE!
What about your offline data? Your GPS tracks, waypoints etc. This all exists in a separate tileset layer on the map (see here for Github Issue and detailed explanation). Meaning….you have to download this separately…AND guess what? It’s another “Offline Pack” with the same 8,948 tiles which contributes to your “Tile Ceiling” total.
So in total, I would need a minimum tile limit of around 18,000 tiles just to be able to support this one area/trip, for one map style.
So in essence, this really screws my users. 3G and 4G LTE internet coverage is pretty good these days but I would be asking my users to go through the hassle of finding wifi/cell coverage, deleting their old offline data, and download the next section of their trip. Every few days!
You might think this could be easily solved by contacting Mapbox but as you might have guessed I am writing this article to warn you that they are not focused on the small fries who can’t pay $1000+ month for their enterprise platform. Personally, I am nowhere close to even needing the PRO features! I have also even offered to pay for the “extra server utilization” that they claim this will incur and is the reason that it’s only allowed on any but the enterprise plan.
Eventually after continuous prodding with the Sales team their head of mobile development reached out:
Justin Miller replied
Mar 29, 4:07pm
[we] have been chatting with some folks here about this and broader issues around pricing that is more attuned with smaller developer needs. Let me get back to you soon (unfortunately, I am traveling abroad next week) but I will keep driving this conversation inside of Mapbox. Thanks for your patience.
Unfortunately nothing since then. Recently I escalated to Head of Sales. Besides the team’s unbiased communication on Github I don’t believe they have made any strides to define the in-between of FREE and Enterprise levels of service.
I will close on a positive note. Besides this tile limitation Mapbox is a great offline map solution for these reasons:
- Tiles load seamlessly — if you don’t have an internet connection it will load from cache and/or then from the offline download. All without the developer or user having to “load” the offline data onto the map manually. This is all handled for you, seamlessly and imperceptibly.
- Offline API — The API to download offline packs handles all the on-device resource management for you.
- Built-in Cache: There is a standard 50mb cache that gets saved/built as the user scrolls around the map (with an internet connection). So some data will be cached without needing to setup an Offline Pack download. It auto-overwrites and refreshes expired tiles for you.