Migration depuis Google Maps API
AfriMap est conçu pour que les développeurs migrant de Google Maps trouvent des patterns familiers. Ce guide montre la correspondance endpoint par endpoint et les différences à connaître.
Comparaison de coûts
| Scénario | Google Maps API | AfriMap Engine |
|---|---|---|
| Startup (10K req/jour) | ~75 000 FCFA/mois | 0 FCFA (sandbox gratuit) |
| VTC 50 véhicules | ~200 000 FCFA/mois | 25 000 FCFA/mois (Starter) |
| VTC 500 véhicules | ~640 000 FCFA/mois | 150 000 FCFA/mois (Pro) |
| Auto-hébergé | N/A | Coût serveur uniquement |
Correspondance des endpoints
| Google Maps API | AfriMap API | Notes |
|---|---|---|
| Directions API | POST /v1/route | Polyline précision 6 (pas 5) |
| Distance Matrix API | POST /v1/matrix | Même concept N×M |
| Geocoding API | GET /v1/geocode | Retourne GeoJSON (pas JSON custom) |
| Reverse Geocoding | GET /v1/geocode/reverse | Identique |
| Places Autocomplete | GET /v1/geocode/autocomplete | Biais de proximité via lat/lng |
| Place Details | GET /v1/places/{id} | IDs stables place_01HZ... |
| Nearby Search | GET /v1/places/nearby | Filtrage par catégorie + rayon |
| Maps JavaScript API | MapLibre GL JS | Fork open-source de Mapbox GL |
| Static Maps API | — | Non disponible (tuiles vectorielles uniquement) |
| Roads API (snap) | POST /v1/match | Map matching Valhalla |
Différences clés à connaître
1. Polyline precision 6 (pas 5)
Valhalla encode les polylines avec un facteur 10⁶ (precision 6), pas 10⁵ comme Google. Si vous réutilisez votre décodeur Google, les coordonnées seront décalées de 10x. Utilisez le décodeur inclus dans les SDKs AfriMap.
2. Authentification par header (pas query string)
Google utilise ?key=AIza... dans l'URL. AfriMap utilise le header X-AfriMap-Key. C'est plus sécurisé (la clé n'apparaît pas dans les logs serveur, les referers, ou l'historique navigateur).
3. GeoJSON partout
Les réponses spatiales suivent le standard GeoJSON (coordonnées en [lng, lat]). Google utilise un format JSON propriétaire. Si vous parsez des coordonnées, attention à l'ordre [lng, lat] vs {lat, lng}.
4. Tuiles vectorielles (pas raster)
AfriMap sert des tuiles vectorielles MVT rendues côté client par MapLibre, pas des images PNG pré-rendues. Cela signifie : rotation fluide, bâtiments 3D, styles dynamiques, mais vous devez utiliser MapLibre (pas un simple <img>).
5. Données locales enrichies
AfriMap connaît les quartiers informels, les landmarks locaux et les marchés avec leurs jours d'ouverture. Ces données n'existent pas dans Google Maps. Profitez-en dans votre UX.
Étapes de migration
- 1Créez un compte AfriMap et obtenez votre clé sandbox. Testez vos appels existants en parallèle de Google.
- 2Installez le SDK AfriMap à côté de votre SDK Google. Les deux peuvent coexister pendant la migration.
- 3Migrez endpoint par endpoint en commençant par le géocodage (le plus simple), puis le routing, puis les places.
- 4Remplacez la carte Google Maps par MapLibre GL JS. Le changement principal est dans l'initialisation de la carte.
- 5Testez avec les coordonnées Abidjan listées dans Erreurs & debugging. Vérifiez les polylines (precision 6!) et les formats de réponse.
- 6Passez en production quand tout fonctionne. Supprimez la dépendance Google Maps et la clé API Google.
Comparaison de code
Google Maps
const directionsService = new google.maps.DirectionsService() directionsService.route({ origin: { lat: 5.3197, lng: -4.0167 }, destination: { lat: 5.3480, lng: -3.9904 }, travelMode: 'DRIVING', }, (result, status) => { if (status === 'OK') { // result.routes[0].legs[0] } })AfriMap
const client = new AfriMapClient({ apiKey: 'afm_live_...' }) const { routes } = await client.routing.route({ origin: { lat: 5.3197, lng: -4.0167 }, destination: { lat: 5.3480, lng: -3.9904 }, mode: 'auto', }) // routes[0].legs[0].maneuvers