The dot on the map is moving. The map itself is the bill.
A tracking screen that stays open all day is the map view most likely to be priced by the load, and the geometry under it is often wrong in ways a straight line cannot show.
Six vehicles, one shift, real roads.
Every line below is a route the engine actually returned. Press play to run the shift, or pick a vehicle to follow it — the trail behind each one is the road it has already covered, not the pings it sent.
What breaks
A dispatch map is not a one-off lookup. It is a screen a person watches for hours, redrawing as vehicles move, and the numbers next to each dot are only as good as the road geometry computing them.
Per-load or per-session pricing charges for every redraw, every pan, every vehicle update on the one screen dispatch never closes — the busiest map in the operation becomes the most expensive one it owns.
Progress and time-to-arrival computed from the distance between two points ignore the road between them. An expressway ramp, a canal crossing or a one-way soi turns a short line into a long detour, and Bangkok has all three.
Pings drift off the carriageway, cluster at intersections, and drop out under elevated roads and in basements. Plotting the raw points as “where it has been” shows the noise, not the road the vehicle actually took.
What it costs
Fleet ops already knows the fleet size and the hours the dispatch screen runs. The line worth checking is what each of those hours costs on a map billed per load.
vehicles tracked × hours the dispatch map stays open per day × per-session map-load cost
Put your own numbers in the calculatorThe endpoints you would use
GET/styles/v1/{styleId}The tracking map surface itself — the screen dispatch leaves open all day, not billed by the load.
POST/v1/routeThe assigned vehicle's planned road geometry, the line the travelled trail and the remaining distance are measured against.
POST/v1/matrixEvery vehicle against the next job in one call, so reassignment is by drive time rather than by which pin looks closest.
GET/v1/isochroneWhether a vehicle can still reach the stop inside the window, as a polygon you can test a point against instead of reading it off the map.
A request you can run
Every vehicle against the new job, then the assigned vehicle's road geometry. Both against the live API.
# Every vehicle already on the road against the new job, in one call —
# reassign by drive time, not by which pin looks closest on screen.
curl -X POST -H "X-MapScale-Key: $MAPSCALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sources":[[100.5018,13.7563],[100.5231,13.7367],[100.5601,13.7279]],"targets":[[100.5348,13.7466]],"profile":"driving"}' \
"https://api.mapscale.io/v1/matrix"
# The assigned vehicle's actual road geometry — what "most of the route is
# done" gets measured against, not the straight line to the stop.
curl -X POST -H "X-MapScale-Key: $MAPSCALE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"coordinates":[[100.5231,13.7367],[100.5348,13.7466]],"profile":"driving"}' \
"https://api.mapscale.io/v1/route"What we can actually claim
Progress, remaining route and ETA run on the same Valhalla 3.5.1 engine over Thailand-wide OpenStreetMap road data behind the rest of this site — see the routing notes for the exact tileset date and where that road layer is thin, rather than a blanket coverage claim.
Bring us your data.
A 30-minute review against your own addresses — not a demo dataset. You will see the failure rate before you see a price.