Use OpenStreetMap maps

Hey folks. I’ve been looking into this again today and revisiting its many complexities. Quick question before I dive into said complexities: do you want iNat maps to show the “standard” style available at I can see how that would be helpful in parts of the world where Google doesn’t have good data, but it also doesn’t have contours, which I find annoying.

Ok, those complexities. I’m hearing a lot of different desires in this thread, including

  1. To show maps with better detail than Google provides
  2. To show maps that people can theoretically update
  3. To show maps that are not blocked or throttled in China
  4. To use more free and open-source software and data because they are more aligned with iNat’s mission than the profit-seeking mission of a corporation like Google


As @pisum pointed out, I think some of what’s happening in this thread is that people are conflating mapping software (the stuff you see, click, and tap to experience the map), map data (what’s actually on the maps), and map data providers (entities that actually provide the map data), which is understandable because in a lot of situations, one entity provides all of that: when you look at an observation on the iNat website, you’re interacting using software provided by Google, the maps were made by Google using data they aggregate from numerous sources (including OSM), and the maps are served from Google servers. But when you look at a map at, you’re viewing the map using open-source software called Leaflet, the maps are made from data added by OSM contributors, and the maps are served by the non-profit OpenStreetMap Foundation if you’re viewing the “standard” map. If you view the CyclOSM map the map is actually served by OpenStreetMap France, a different non-profit, and if you view the Cycle Map the tiles are coming from a UK for-profit company called Gravitystorm Limited.

It’s important to make these distinctions because the software we use affects the data we can use, and the server of the tiles affects how much we have to pay and/or how much damage we might do if we’re not paying. For example, if we want to show Google data from Google servers, we have to use Google’s software according to their terms. We can show OSM map data using Google software, but we can’t show Google map data using any software other than Google’s. That means if we want to satisfy desires like viewing maps in China or not associating with profit-seeking corporations, we would have to not use Google software and lose access to Google’s map data (for the record, severing ourselves from profit-seeking corporations would require becoming a much, much bigger and well-funded entity than we are now, so while I sympathize, that’s not realistic right now).

It’s also important to understand that iNat uses maps a lot. We show between 400k and 500k maps per day (that’s maps, not tiles). That’s a level where a lot of map companies don’t even list their prices and you have to negotiate something with their sales team, and it would be a lot of traffic to throw at a fellow non-profit like OSMF or OSMFR, because then they would have to pay for the traffic and compute time, or at least balance their resources to make sure they don’t let a bandwidth hog like us impact their other users. Frankly, it would be a lot of traffic to take on ourselves if we were to host the map data and pay for the resulting traffic. Google donates this to us for free. No matter how you feel about Google’s prices, ethics, or impact on the world, it’s hard to beat $0, especially when you’re a team of 9 people at a non-profit natural history museum.

I’m not even going to get into raster vs. vector map data, but that also complicates things (can’t use OSM-based vector map data with Google software).

Last bit of background: OSM map data may be more open, free, and updatable than Google map data, but Google’s data adds a lot of value, including

  1. Regularly updated high-resolution satellite imagery (in my part of the world it seems to update every few months)
  2. Internationalization (if I tell my browser I want to view Japanese, Google Maps will show me map data with street names in Japanese when I view my neighborhood in Oakland, California; most OSM maps will show labels in the language of the place being viewed, but not in the language of the viewer)

That’s not even including the services that Google provides aside from map data, like geocoding & reverse geocoding, as @ahospers pointed out.

What We Could Do

Switch all our maps to open-source software and only display open data

This would satisfy all the desires listed above, with the following costs

  1. Lots of developer time re-engineering all our maps in our web app and three mobile apps
  2. Losing access to Google’s map data, which I think is the best for most iNat users in most places and provides satellite imagery that has no equivalent in the open data world that I know of
  3. Either pay someone to host the map data or buy a data product and pay to host it ourselves (either way, spend much more on maps than the $0 we currently pay)

Our map code is ancient and in dire need of an overhaul, and I think this would be beneficial and affordable as a non-default option and as the default in places where Google is throttled, but I don’t think we can support it as the default for everyone. The service Google provides is outstanding in most ways, despite the complaints listed above, and taking it away from people on iNat would not be pleasant for anyone.

Switch all our maps to Mapbox

Mapbox is another company that provides services similar to Google, including OSM-based maps and some great satellite imagery. Their pricing for our scale of usage is opaque, and frankly they are another profit-seeking company like Google, and, like Google, you have to use their software to access their data. No idea how frequently they roll in new OSM data, or how accessible they are in China, so it’s not clear to me what the advantages over Google would really be. It is clear it would be a lot of work and probably cost more than $0 / month.

Add the “Standard” OSM map tiles hosted by the Open Street Map Foundation as optional basemaps on iNat

I actually contacted OSMF last year and someone got back to me saying they’d be ok with this, but that they’d block us if we sent them too much traffic. That seems totally reasonable to me, and this would be mostly easy to try (need to redo the way people choose the basemap on the web, at least), but it’s not clear to me if that’s what people really want, hence my question at the top. Most people seem to prefer maps with topographic info, which the OSMF tiles don’t provide. On top of that, I think this additional option would probably be confusing for the majority of people on iNat, so we might need to make it opt-in.

Add some other OSM-based map tiles hosted by someone else

E.g. Maptiler Cloud, Thunderforest / Gravitystorm, etc. Same issue with confusing people who don’t know what OSM is, plus we have to take on new costs unless someone wants to offer it for free (doubtful). About the same level of engineering as using the “standard” OSMF tiles.

Add some other OSM-based map tiles that we host

Possibly more cost-effective than using hosted tiles, but really hard to say. We would probalby purchase the data from someone like Maptiler, and we’d also have to keep it up to date, and pay for all the network traffic. Lots more work on the devops side of things, work that will continue indefinitely and get harder if we continue growing.


Honestly this isn’t super high priority and I’m mostly just diving in because our Android contractor needs new work and this was on our roadmap. Just adding the OSMF tiles as an option would be relatively straightforward and if that’s what people want, we can do that in our next round of development and get it into the Android app (and maybe the web) next month. If topo info is a requirement, I can start reaching out to providers like Maptiler and Thunderforest / Gravitystorm about pricing, so that will slow things down a bit. I don’t think totally redoing our maps is on the horizon at the moment.