Intégrer une carte interactive dans React ou Flutter
Ajouter une carte interactive à votre application est devenu un besoin courant : e-commerce, livraison, mobilité, immobilier… Mais entre les frameworks, les SDK et les API disponibles, le choix peut sembler complexe.
Voici un guide pratique pour intégrer une carte dans React (web) et Flutter (mobile), en utilisant une API cartographique adaptée au marché tunisien.
Pourquoi utiliser une carte interactive ?
Une carte interactive permet à vos utilisateurs de :
- visualiser des emplacements (magasins, restaurants, points de livraison),
- rechercher une adresse avec autocomplétion,
- calculer un itinéraire entre deux points,
- interagir avec des zones géographiques (filtrer par quartier, gouvernorat),
- suivre un véhicule ou un colis en temps réel.
Une carte bien intégrée transforme l'expérience utilisateur et réduit les erreurs d'adressage de 40 à 60%.
Intégration dans React (Web)
L'approche recommandée : MapLibre GL + TMaps
MapLibre GL JS est un moteur de rendu open source pour les tuiles vectorielles. Combiné à l'API TMaps, il offre une solution performante et personnalisable.
Les étapes clés :
- Installer les dépendances :
maplibre-glvia npm ou yarn - Configurer le composant : créer un conteneur de carte avec une référence React
- Initialiser la carte : dans un
useEffect, instancier MapLibre avec l'URL de style TMaps - Ajouter des marqueurs : utiliser l'API Marker pour placer des points sur la carte
- Gérer les événements : click, zoom, déplacement, etc.
Bonnes pratiques React :
- utiliser
useRefpour la référence du conteneur, - nettoyer la carte dans le
returnduuseEffect, - éviter de recréer l'instance de carte à chaque rendu,
- utiliser
useMemopour les données de marqueurs, - lazy-loader le composant carte avec
React.lazy.
Intégration dans Flutter (Mobile)
L'approche recommandée : flutter_map ou maplibre_gl
Pour les applications Flutter, deux options se distinguent :
- flutter_map : plus simple, basé sur Leaflet, idéal pour des cartes basiques
- maplibre_gl : plus puissant, rendu vectoriel GPU, adapté aux cartes avancées
Les étapes clés :
- Ajouter le package dans
pubspec.yaml - Configurer les permissions : localisation pour Android et iOS
- Créer le widget carte :
FlutterMapouMaplibreMapselon le package choisi - Connecter à TMaps : renseigner l'URL du serveur de tuiles TMaps
- Ajouter des couches : marqueurs, polylignes, polygones
Bonnes pratiques Flutter :
- gérer le cycle de vie du contrôleur de carte,
- limiter les bounds pour restreindre la vue à la Tunisie,
- implémenter le clustering pour les grandes quantités de marqueurs,
- précharger les tuiles pour le mode hors-ligne,
- utiliser
AnimatedMapControllerpour les transitions fluides.
Les pièges à éviter
1. Ne pas gérer le responsive
La carte doit s'adapter à toutes les tailles d'écran. Utilisez des contraintes CSS (width: 100%, height: 100vh) ou des LayoutBuilder en Flutter.
2. Charger trop de marqueurs
Au-delà de 500 marqueurs, les performances chutent. Implémentez du clustering (regroupement de marqueurs par proximité).
3. Oublier le fallback réseau
Prévoyez un état de chargement et un message d'erreur si les tuiles ne se chargent pas.
4. Ignorer l'accessibilité
Ajoutez des aria-label sur le conteneur de carte et des alternatives textuelles pour les interactions.
Pourquoi TMaps pour vos cartes interactives ?
L'API TMaps est conçue pour s'intégrer facilement dans les frameworks modernes :
- tuiles vectorielles compatibles MapLibre (React, Flutter, Android, iOS),
- géocodage et autocomplétion optimisés pour les adresses tunisiennes,
- API de routage pour le calcul d'itinéraires,
- documentation claire avec des exemples de code,
- latence faible grâce à une infrastructure proche.
Comparaison des approches
| Critère | React + MapLibre | Flutter + maplibre_gl |
|---|---|---|
| Rendu | WebGL navigateur | OpenGL natif |
| Performance | Excellente | Excellente |
| Personnalisation | Totale (CSS + style) | Totale (style JSON) |
| Offline | Service Worker | Cache tuiles natif |
| Taille bundle | ~200 Ko | ~2 Mo (natif) |
Conclusion
Intégrer une carte interactive dans React ou Flutter n'est plus un défi technique majeur. Avec les bons outils — MapLibre GL côté moteur de rendu et TMaps côté données — vous pouvez offrir une expérience cartographique fluide, personnalisée et adaptée au contexte tunisien.
L'important est de choisir la bonne architecture dès le départ et de suivre les bonnes pratiques spécifiques à chaque framework.