Mode hors-ligne
Navigation complète sans réseau. Les données carte + routing sont téléchargeables par commune (~60-100 MB). Critique pour les zones à couverture réseau instable en Afrique de l'Ouest.
Pourquoi le mode hors-ligne
Couverture réseau
Beaucoup de zones en CI ont une couverture 4G/3G intermittente. Un chauffeur VTC ne peut pas perdre sa navigation dans un tunnel ou une zone morte.
Coût data
Les tuiles carte consomment des données mobiles à chaque session. Le téléchargement offline une seule fois réduit la consommation de 95%.
Fiabilité
Les coupures de courant impactent les tours cellulaires. L'app doit fonctionner même si le réseau tombe pendant une course.
Ce qui est téléchargé
| Composant | Format | Taille | Rôle |
|---|---|---|---|
| Tuiles carte | MBTiles (SQLite) | 30-50 MB par commune | Affichage de la carte (rues, bâtiments, POI) |
| Tuiles routing | Valhalla tiles | 20-40 MB par commune | Calcul d'itinéraire local |
| Style carte | JSON + sprites + fonts | ~5 MB | Rendu visuel de la carte |
| Clips audio TTS | MP3 | ~200 KB par itinéraire | Instructions vocales pré-synthétisées |
Total par commune : 60-100 MB. Abidjan (9 communes) ≈ 600 MB.
Télécharger les données offline
// Télécharger les tuiles pour Cocodyawait client.offline.downloadRegion({ name: 'cocody', bounds: { north: 5.38, south: 5.32, east: -3.96, west: -4.02, }, minZoom: 10, maxZoom: 16, includeRouting: true, includeStyle: true, onProgress: (pct) => { progressBar.value = pct // 0.0 → 1.0 }, }) // Vérifier les régions téléchargéesconst regions = await client.offline.listRegions() // [{ name: "cocody", size_mb: 72, updated: "2026-04-15" }]Navigation hors-ligne
Quand le réseau est absent, le SDK bascule automatiquement sur les données locales :
GPS fix SDK Navigation Données
│ │ │
│ position update │ │
│ ─────────────────► │ │
│ │ réseau dispo ? │
│ │ ── NON ──────► │
│ │ │
│ │ routing local │
│ │ (Valhalla tiles) ◄─── tuiles locales
│ │ │
│ │ carte locale │
│ │ (MBTiles) ◄─────────── tuiles locales
│ │ │
│ │ voix locale │
│ │ (clips pré-cachés) ◄── MP3 locaux
│ │ │
│ ◄── navigation OK │ │
│ │ │
Format MBTiles
Les tuiles offline sont packagées en MBTiles — un format SQLite standardisé qui contient toutes les tuiles vectorielles pour une région donnée.
Structure MBTiles
# Table metadata : infos sur la région name = "cocody" format = "pbf" bounds = "-4.02,5.32,-3.96,5.38" minzoom = 10 maxzoom = 16 # Table tiles : les tuiles vectorielles# zoom_level | tile_column | tile_row | tile_data (pbf compressé)MapLibre GL Native (Android/iOS) supporte nativement MBTiles comme source de tuiles. Le SDK AfriMap configure automatiquement la source quand des tuiles offline sont disponibles.
Stockage sur appareil
Android
- Stockage : fichiers app internes
- Format : MBTiles + Valhalla tiles + MP3
- Gestion :
OfflineManagerdu SDK - Nettoyage automatique des régions inutilisées (> 30j)
iOS
- Stockage : Documents + Application Support
- Format : identique Android
- Gestion :
OfflineManagerdu SDK - Marqué
isExcludedFromBackuppour iCloud
Mise à jour des données
Les données OSM évoluent. Planifiez des mises à jour mensuelles :
// Vérifier si une mise à jour est disponibleconst regions = await client.offline.listRegions() for (const region of regions) { const update = await client.offline.checkUpdate(region.name) if (update.available) { await client.offline.downloadRegion({ name: region.name, // ...mêmes paramètres — écrase l'ancienne version }) } }