Repository navigation
Description
What problem would this solve?
Most people who navigate by car do it on the car's display, through Android Auto or CarPlay. OpenMapX does not appear there, so someone who wants to use it in the car has to mount the phone and look at a small screen instead of the dashboard. Without a car surface, OpenMapX cannot replace the default navigation app for drivers.
What would you like to be able to do?
When I connect my phone to a car with Android Auto, OpenMapX appears as a navigation app. On the car display I see the OpenMapX map with my route and position, the next maneuver, the distance to it and my arrival time. I can pick a destination from recent and saved places or search for one, start and stop navigation from the car, and hear voice guidance through the car's speakers. Phone and car show the same trip. CarPlay offers the same once Apple has granted access.
Verified current state
Checked against main at e68106f on 3 November 2026.
- There is no
CarAppService, CarPlay scene or car manifest entry in the app. - The app draws its map only in the WebView, which cannot draw on a car surface. There is no native map renderer.
- The native
NavigationCoordinatorpublishes snapshots of the active session (maneuver, progress, ETA). feat(mobile): run native ground and transit navigation in the installed app #758 composes it into the running Android app, so a car surface can consume the same session. - The app's architecture says map rendering belongs to the WebView, and store metadata may not mention Android Auto or CarPlay. A native car map is a deliberate exception that this issue must document.
- The shell can already plan and start a trip without the page: it uses the shared
fetchDirectionsandbuildGroundNavigationPackagefrom core.
Approach
- Platform order and access (first, short step). Build Android Auto first. Development and testing with the Desktop Head Unit need no approval; publishing needs Google Play's car app review. Request Apple's CarPlay navigation entitlement at the start, because approval takes time. Confirm the current requirements, target API levels and review rules from primary documentation (Android for Cars navigation apps, CarPlay) and record them with dates. Android Automotive OS is a separate decision.
- Map on the car screen. Render the instance's own OpenMapX style with MapLibre Native on the car's surface, with the route line and position drawn from coordinator snapshots and day and night styles. Ferrostar's Android Auto guide shows a MapLibre-based setup to start from. Keep the cartography the same as the web map.
- One session, one owner. The car screen is another consumer of the coordinator, not a second navigation engine. Starting from the car plans the route and builds the start package in the shell with the shared core functions. The page, when open, sees the same session through the bridge's active-session handshake. Stopping from the car, phone or page ends the same session.
- Templates and metadata. Use the navigation template for guidance and the place-list or search templates for destinations. Report trip updates (maneuver, distance, ETA) through the car's navigation manager so the instrument cluster and head-up display show them. Handle host-requested stop and the car's day and night mode.
- Destinations. Search uses the instance's public geocoding API. Recent and saved places come from the page: it shares a bounded list with the shell over the bridge, so the shell never needs the user's web session.
- CarPlay. Once the entitlement is granted, provide the same feature set with
CPMapTemplateand MapLibre Native on iOS, as a follow-up step in this issue.
Out of scope: mirroring the web UI on the car screen, Android Automotive OS, transit navigation in the car, and car-specific search ranking.
Acceptance criteria
- Platform requirements, the entitlement request and its status, and the target versions are documented with dates.
- In the Desktop Head Unit and on a real head unit, OpenMapX appears as a navigation app and renders the OpenMapX map with the route and current position smoothly, in day and night modes.
- The car shows the next maneuver, the distance to it and the ETA. The instrument cluster receives trip updates where the car supports them.
- A destination chosen in the car from recent places, saved places or search starts guidance.
- Navigation started on the phone appears in the car, and the reverse. Stopping from either side ends the one session.
- Disconnecting and reconnecting the car, locking the phone and reloading the page do not stop navigation or create a second session. A reroute appears in the car.
- Voice guidance plays through the car's speakers with correct audio focus.
- The car screens meet the Android for Cars navigation quality guidelines (template rules, driver distraction).
- CarPlay: the same behaviour in the CarPlay Simulator and a car once the entitlement is granted. Until then, the blocker is stated in the issue and the docs.
- The car session adapter has tests, and the docs include Desktop Head Unit and simulator screenshots.
- The architecture docs record the native car map as an exception, and the store metadata and its forbidden-claims test are updated when car support ships.
Verification approach
Replay a recorded route in the Desktop Head Unit to check guidance, reroute, connect and disconnect, and stop. Test on at least one real Android Auto head unit before release. Keep platform review findings separate from phone-only test results.
Dependencies and decisions
- Connect native navigation in the installed mobile app #398 (native navigation) is required. fix(mobile): start the installed app and keep its bridge on Android #756–feat(mobile): draw the app's own screens in the web UI's colours #759 compose it on Android.
- Plan routes and reroute without a network in the Android app #404 (offline routing) is optional; online car navigation does not depend on it.
- Decide during the first step: MapLibre Native's integration path for the car surface, and how much of the destination UI is in scope for the first release.
Alternatives or workarounds
Mount the phone and use the app on its own screen (today). Mirror the phone screen: platforms do not allow it for navigation apps. Build only CarPlay first: it depends on an Apple approval we do not control.
Additional context
Ownership and status
Maintainer-owned backlog. On 3 November 2026 this was rewritten from a scope decision into the feature itself; settling platform access is its first step.
Metadata
Metadata
Assignees
Labels
Type
Fields
Priority
Effort
Activity
[-]Decide Android Auto and CarPlay integration scope[/-][+]Show OpenMapX navigation on Android Auto and CarPlay[/+]feat(mobile): show OpenMapX navigation on Android Auto (#776)