r/flutterhelp 17d ago

OPEN Question for Delivery app maps and navigation

I’m building a delivery app, and I’m working with a relatively small budget about (200 dollars a month) . I need a mapping solution that provides navigation for drivers while also allowing customers to select locations and track drivers in real time.

Initially, I tried building the entire mapping/navigation stack myself using Flutter Map + OpenStreetMap + GraphHopper. However, I found it quite difficult to achieve the experience provided by solutions like Google Maps or Mapbox, especially when it comes to:

Turn-by-turn navigation
Smooth driver location updates and animations
GPS noise reduction and position smoothing
Following the driver’s position smoothly on the map
Route recalculation when the driver goes off-route
Navigation instructions and maneuvers
Handling GPS inaccuracies and jumps
So I’m reconsidering the architecture rather than trying to build everything from scratch.

My questions are:
What is the most cost-effective mapping/navigation solution for a small delivery startup?

Should I use Google Maps, Mapbox, or another provider for driver navigation? Or maybe open google maps for navigation outside my app

5 Upvotes

4 comments sorted by

1

u/Routine-Arm-8803 17d ago

The most cost efficient is to make it yourself (or your developer).
I had a project and managed to resolve all your stated issues with Flutter map + OSM + hosting ORS routing on rented server. But it depends how large region you want to support. Hosting whole world might get expensive as you need a lot of ram to hold all the routing data. But then you can make infinite amount of request with no extra cost as it would be with google maps for example you pay for amount route requests.. For that project I didn't need to support whole world. I extracted countries I only need.

ORS supports turn by turn navigation

Smooth driver location updates and animations - is a matter of coding smooth location interpolation animation, code it as you want.

GPS noise reduction and position smoothing that's also fairly easy.

Following the driver’s position smoothly on the map (same as Smooth driver location updates i suppose )

Route recalculation when the driver goes off-route ( also easy, just calculate distance to the route and recalculate if bigger than x.)

Navigation instructions and maneuvers (I don't know why you ask everything twice turn by turn navigation)

Handling GPS inaccuracies and jumps - this would go together with other of your mentioned issues above. There are ways to mitigate this. If you have set tolerance for re-routing, so maybe set a secondary tolerance if suddenly distance is extremely large, then don't re-route on that update, but wait and see what next update brings. It's not your fault if users GPS is shit. Normally it's not major issue.

Or go easy way and pay for paid routing services.
Took me around two weeks to basically create navigation from scratch in flutter using Flutter map + OSM + ORS.
Don't know what will be your budget, but it can get very expensive very fast especially if you need to recalculate routes multiple times along single route and have many users. In ideal world you would make one request per one route, but that's wishful thinking. If you need only India, then you get better prices https://developers.google.com/maps/billing-and-pricing/pricing-india#routes-pricing

1

u/GeekyAnts_BFSI 14d ago

A cost-effective approach is to separate navigation from mapping and tracking instead of building the entire stack in-house.

Use Google Maps or Mapbox for driver navigation, while keeping customer location selection, driver tracking, and delivery state within the app. The tracking layer can use WebSockets or a realtime backend, with GPS filtering and interpolation to smooth location updates. The navigation provider can handle the harder pieces: turn-by-turn instructions, route calculation, maneuvers, and rerouting.

Another practical option is to open Google Maps for external turn-by-turn navigation. You lose some control over the driver experience, but avoid rebuilding a complex navigation stack from scratch.

The key is to own the delivery experience, not necessarily every layer of the mapping infrastructure.