Hello everyone! I work at Mapbox on our Community team, which supports non-profits, researchers, and other positive impact projects to use our tools. ODK Collect is a very common data collection tool among our partners. Earlier this year I connected with @yanokwa about the possibility of integrating Mapbox basemaps (which are built largely with OpenStreetMap data) as an option within ODK. A colleague of mine on the Mapbox mobile team has been volunteering his time to investigate what would be involved to do this
I wanted to start a topic to let you know what we've been trying and invite discussion and feedback about whether and how to add this feature.
What is the general goal of the feature?
While OSM Droid (currently in ODK) does support Mapbox, it only supports raster tiles not vector tiles, which are faster and lighter to use and are what most mobile maps are moving to. We think vector tiles would also help with low-bandwidth and offline mapping scenarios.
Rather than sinking time into a Mapbox raster option (which might be more complicated and not as good), it looks like the easiest thing to try would be adding the Mapbox Android SDK to ODK, alongside the other map options. That would allow for vector maps and would benefit from our optimized offline caching. And it would mean there are more folks at Mapbox who would be able to help!
Another benefit of using the Android SDK is that each user will have their own ceiling of 6,000 tiles for offline caching (the ODK app will need to manage the tile cache). Users would not need their own Mapbox accounts, you could use one token from an ODK Mapbox account.
What are some example use cases for this feature?
The main driver for this interest is for a better mapping / map view experience when collecting data offline or where there is low connectivity.
The other driver would be to give ODK users the option of using Mapbox basemap styles in their map interface - and potentially even letting users use their own custom Mapbox styles if they've made one.
What can you contribute to making this feature a reality?
From Mapbox's side, we can contribute technical and accounts support.
-
From the technical implementation side, my colleague Langston Smith (and engineer on our mobile team) is looking at the current ODK implementation to see what it would take to add in Mapbox vector tiles, and potentially get from raster to vector tiles across the board. He's volunteering his time on this so is working through it bit by bit. So far he's got it so Mapbox shows up in the options:
-
From the accounts side, I can help work through questions about what user token would be used. To simplify things, and keep with the ODK approach of not wanting to require users to get their own map provider tokens, it might be easiest to create a master ODK Mapbox account and have that account's token built into the app - that way we could work with ODK to monitor that traffic and cover it for free. But we need to look at estimates for tile use and caching activity to get a sense of how much traffic we'd be looking at.
- It might be a good idea to require (or request?) users to set up their own Mapbox accounts if they are planning a fairly large deployment, or if they plan to go above a certain level of usage. (And the Mapbox Community team could help those users if costs are a concern.)
- An incentive for users to create their own Mapbox account could be that the app could maybe allow them to use their own custom style basemaps. We could also help create some documentation about working with data from ODK in Mapbox tools, to take advantage of other aspects of having a Mapbox account.
- If you'd be interested in using your own Mapbox account (or at least be willing to), that would be great to know!
-
If we can figure out the basemaps, there might be other ways that Mapbox volunteers can contribute to helping to strengthen the geo tools within ODK.
What do you think? Would you like to see Mapbox vector tiles as a map option in ODK Collect? Are there any concerns or questions we should have on our radar as we try this out?