Skip to main content

Maps and speed warnings for the screen in your car

Your speed, the limit, and the road you are actually on.

Z-Maps Car runs on the Android head unit already fitted to your car, on OpenStreetMap data. No Google Play Services, no API key, no extra hardware — install the APK and drive.

  • Android 6.0 and newer
  • No Google Play Services
  • No API key, no quota
  • Keeps working when mobile data drops

400 mTurn right onto Nguyen Van Linh12 min · 8.4 km

62km/h

QL1A — Hoa Vang, Da Nang

42.8 kmDistance
54 km/hAverage
88 km/hMax

GPS good · speed computed from fixes

On a real screen

Readable in a glance

Screenshots from a real device, not mockups.

Driving
DrivingSpeed, limit sign and road name, at a size you can read through a windscreen.
Finding a place
Finding a placeType without Vietnamese accents and it still finds it. Works with no signal.
Looking ahead
Looking aheadPan the map, then it returns to following the car by itself.
0API keys to register forOpenFreeMap tiles, no quota
512 MBMap cache on deviceRoads you have driven stay available offline
10 MBAPK for 32-bit units13 MB for arm64
46Unit tests passingSpeed, limits, alerting, trips

What it does

Everything on screen comes from GPS and the map

The app reads nothing from the car's ECU. What you see is derived from position fixes and map data — which is also why installing the APK is the whole setup.

A speed reading even on bad GPS hardware

Many aftermarket head units report a speed of zero forever. The app detects that and switches to computing speed from consecutive position fixes instead.

Speed limits under Circular 31/2019

A maxspeed tag is used when the data has one. When it does not, the limit is inferred from road class and built-up area — and shown with a visible '~ estimated' marker so you know it is an inference.

Alerts that do not wear you down

A 3 km/h hysteresis band stops GPS noise from flickering an alert while you drive near the limit. Cooldowns of 30/20/12 seconds by severity — but an escalation speaks immediately.

The map survives losing signal

MapLibre caches 512 MB of the roads you have driven. Drive a familiar route with no data connection and the map is still there.

Wrong limit? Correct it yourself

Where the app guesses wrong, fix it from the driving screen. Your figure is remembered for that stretch of road and used the next time you drive it.

Trips are kept

Distance, time, average and maximum speed, and the number of overspeed events, stored per journey. Trips under 300 m are not recorded.

Decisions

What was chosen, and what it was chosen over

Every row below is a place where a different choice was available. They are written down so that you know what you are installing.

AreaChosenWhy
Target devicesminSdk 23 → targetSdk 35Covers old Chinese head units as well as recent ones, rather than only the recent ones.
Map renderingMapLibre Native 11.11A real Android SDK: vector tiles, GPU rendering, and deep customisation.
Tile sourceOpenFreeMap (liberty)OpenMapTiles schema, no API key and no quota — nobody has to sign up for anything.
Offline512 MB ambient cacheCaches what you drive. Losing signal mid-route still leaves a map, without downloading a whole province first.
Location and speedPlain LocationManagerFused Location is silent on devices without Google Play Services — which is the main target group.
Speed limitsOSM maxspeed → road-class fallbackVietnamese roads are very often missing the maxspeed tag, and public tiles do not carry it at all.

Version 0.1.0

About five minutes to install on a head unit

Download the APK that matches your unit's chip, allow installing from unknown sources, grant location permission. The guide walks through every step.