SnackTrack[8]: Maps integration (research)

What map API to integrate?
What will it cost?
How to integrate it?

These are the questions we will be looking to answer here.

Contenders

Lets see some obvious contenders (ones that you will find as primary options after 5 mins of search):

  • Google Maps… obviously
  • MapBox
  • Apple maps – does not support Android.
  • Open Street Map
  • Bing Maps
  • TomTom, maybe

What do my favourite apps use?

  • GreenGo uses Google Maps
  • Uber uses Google Maps
  • Bolt uses Google Maps (starting to be a front runner…)
  • Airbnb uses Google Maps
  • Lime uses MapBox
  • Mol BUBI uses Apple Maps (it means its not multi platform, as we need)

Heavy on Google Maps. Seems like it worked out nice for most of the successful companies.

Eye test

When deciding on the final solution first thing’s first: it has to do the job. Meaning, it has to have really most of the restaurants in my area. So however cool or custumizable a map API can be, if it does not have the places we need, it is all for nothing.

Let’s see:

Compare my contender’s APIs to see how much of the nearby restaurants they really have.

Bing Map: underwhelming..

Google Maps: rich as hell

Pricing

Target

In our backend we have (/month):

PlanetScale DB: 1B reads, 10M writes, 5GB free (+50$ when rapid scaling)
Lambda: 1M request free (+$0.20/extra Mill.)

This can serve around 5k MAU I think, for this app, without a penny.
This is without any cache. So let’s target 5000 MAU for maps API, too.

To calculate proces, let’s see what we need first:

  • Map display – to render maps.
  • Places API – to get minimal info of places.
  • Autocomplete/search – for a nice UX.

What do providers offer?

Google (/month)
Map: free. (for IOS and Andriod)
Places: ID and photos free unlimited. Everything else 17$+ /1k requests
Autocomplete:
– per request: 2.8$ per 1k req.
– per session: 17$ per 1k session

MapBox (/month)
Maps SDKs for Mobile: 25k MAU free 100$ / extra 25k
Places: ?
Search Box API:
– Requests: 50k free, 1$ /extra 1k request
– Sessions: 500 free, 2.5$ /extra 1k session

I wan to be able to:

  • Display a map
  • Display restaurants and bars on it
  • Make displayed Pins clickable with name, photo/logo and coordinates
  • Search places with autocomplete
  • Display my personal location collection

How does this map to services?

  • Display a map – SImple Dynamic map service
  • Display restaurants and bars on it – same. Just need a provider with vast data.
  • Make displayed Pins clickable with name, photo/logo and coordinates – Places API + Find nearby feature and category filter.
  • Search places with autocomplete – Autocomplete search feature.
  • Display my personal location collection – custom markers feature.

So now we know what we have to compare from each provider.
Let’s see.

ProviderDynamic mapCust. markersvast dataPlaces APINearby + cat. filterAutocomplete search
Google Maps
200$ free quote
7$ per 1k req.yes10/10Place details
17$ per 1k req.
Nearby: 32$ per 1k
Has filter.
2.83$ per 1k req.
17$ per 1k session
Mapbox25k MAU freeyes10/9100k req. freeBuilt into Places API.500 free,
All fees are per month basis.

What traffic are we expecting?

Google Maps

I want to be realistic. 15 map times for an avg user to use the app a month, let’s say. Then we need:
– 15 map loads = 15 map load => 0.105$
– 3×15 autocompletes – with 3 searches per usage => 0.127$ req + 0.765$ sess.
– 7×15 nearby searches – with 7 map positions per usage => 3.36$
– 7x15x10 place details – with 7 map positions per usage and 10 places loaded per position => 17.85$

Dynamic Map: 0.105$
Autocomplete: 0.892$
Nearby: 3.36$
Place details: 17.85$
Total: 22.207$

That’s for 1 user. Per month. Come on…

BUT if we forget about displaying clickable pins and rely on search:
its 1$ (0.997$ exactly) to operate.
And 200$ quota is free every month for every user.
So practically we can operate 200 users totally free with the best market leading map API. BUT after that, 5k users would cost… well… 5.000$.
That is really, really not cost efficient scaling.


Mapbox

– 15 map loads => free until 25k MAU
– 3×15 autocompletes
– 1 user: 45 session free. 5k user: 225.000 sessions => 650$
– 1 user: 45 request free. 5k user 225.000 session => 180$
– 7×15 nearby searches – this step is not needed with Mapbox
– 7x15x10 place details – 1 user: free. 5k users => 2400$

SO to summarize:
Map: 25k free MAU
Autocomplete: 830$ for 5k users
Places: 2400$ for 5k places
Total: 3230$

So one user is free. And 5k users will cost 3230$. That is waaay better. And considering that this implies a pretty active, heavy usage, it is potentially way lower.

IF it is easy to interate to Expo, we should just go ahead with this. If not, then we shoul roll with Expo’s Google ma built into expo-map-view for free, and use MapBox’s Search box or Geocoding APIs to hadle locations. Either could work.

You know what?

We don’t need to set all this up from 1 provider.
Let’s use the free expo-map-view map.
Add the 40k free place request Foursquare Places API for triggers and fetching.
OR the 100k free Geocoding v5 API from Mapbox.

What we need from a place API:
Fetch nearby places based on on location with data:

  • provider ID
  • display name
  • place type
  • coordinates
  • distance
  • category
  • Photos(?)

https://location.foursquare.com/pricing/

https://docs.mapbox.com/api/search/geocoding/#reverse-geocoding

https://api.mapbox.com/search/searchbox/v1/list/category?access_token=pk.eyJ1IjoibnlpdHJhaWJlbmNlIiwiYSI6ImNscmF0cjR1dTBpcG8ycXBqbmN5dzI4NGUifQ.MOwoOrqbNSynhX9J_lw4rw


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *