Lorsque vous intégrez une carte dans une application web, une décision architecturale façonne tout ce qui suit: tuiles raster ou tuiles vectorielles. Si vous vous y prenez bien, votre carte est rapide, belle et adaptable. Si vous vous y prenez mal, vous livrez une image de fond pixelisée et lente qui s'oppose à votre système de design à chaque étape.
Ce guide explique la différence technique entre les deux formats, passe en revue les compromis réels qui importent vraiment à un développeur frontend, et vous donne un cadre de décision clair. À la fin, vous saurez exactement quel format choisir pour votre projet et comment commencer à utiliser les tuiles vectorielles sur MapAtlas.
La question du format de tuile se pose tôt dans presque tous les projets de cartographie, et internet regorge de réponses superficielles qui s'arrêtent à "les tuiles vectorielles sont plus récentes". Ce guide va plus loin, couvrant les pipelines de rendu, les tailles de charge utile, la compatibilité des navigateurs, le contrôle du style, et les scénarios spécifiques où les tuiles raster restent le bon choix.
Si vous construisez déjà et avez juste besoin du code, passez à la section Quick Start.
Que Sont les Tuiles Raster?
Une tuile raster est une image PNG ou JPEG pré-rendue, typiquement 256x256 ou 512x512 pixels, représentant une tranche fixe du monde à un niveau de zoom spécifique. Lorsqu'un utilisateur fait un panoramique ou un zoom, le navigateur demande les tuiles adjacentes ou à résolution plus élevée, que le serveur a déjà rendues et mises en cache.
Le rendu se fait entièrement côté serveur. L'image de tuile qui arrive au navigateur est une image finie, les pixels sont déjà placés, les couleurs sont déjà cuites. La tâche du navigateur est simplement de l'afficher.
Comment Fonctionnent les Serveurs de Tuiles Raster
Une pile de tuiles raster ressemble généralement à ceci:
- Les données géographiques brutes (OpenStreetMap, données cadastrales, modèles d'élévation) sont traitées dans une base de données.
- Un moteur de rendu (Mapnik est le classique) pré-rend les tuiles à chaque niveau de zoom dans un cache de tuiles.
- Un serveur de tuiles (TileServer GL en mode raster, ou un CDN géré) sert les images mises en cache selon la convention d'URL
/{zoom}/{x}/{y}.png.
Le résultat est simple, rapide et sans état. N'importe quel client HTTP peut demander une tuile, un navigateur, une application mobile, un processus côté serveur générant une image cartographique, ou une application GIS desktop.
Forces des Tuiles Raster
- Zéro surcharge de rendu côté client. Le navigateur affiche juste une image. Aucun WebGL nécessaire, aucune compilation de shader, aucun rendu de police.
- Compatibilité universelle. Fonctionne dans n'importe quel navigateur, n'importe quelle version, y compris Internet Explorer et les environnements de rendu headless.
- Apparence prévisible. La carte ressemble exactement à ce que le serveur de tuiles a rendu. Aucune variabilité côté client.
- Génération d'images côté serveur facile. Parfait pour générer des instantanés de carte pour les e-mails, les rapports PDF ou les cartes de partage open graph.
Faiblesses des Tuiles Raster
- Tailles de fichier importantes. Une tuile PNG typique 256x256 fait 30 à 200 KB selon la densité de contenu. Une tuile Retina (512x512) a quatre fois le nombre de pixels.
- Pixelisation sur les écrans haute DPI. Une tuile rendue pour un écran 1x semble floue sur un écran Retina 2x à moins que vous serviez des tuiles @2x, doublant votre bande passante.
- Pas de rotation ou d'inclinaison. Si vous faites pivoter une carte raster, les étiquettes de texte pivotent avec elle et deviennent illisibles. C'est pourquoi les cartes raster sont toujours orientées vers le nord.
- Aucun changement de style côté client. Vous voulez changer la couleur de la route, masquer les icônes POI, ou passer au mode sombre? Vous avez besoin d'un nouvel ensemble de tuiles, pré-rendu côté serveur.
- Interpolation de zoom. Entre les niveaux de zoom entiers, le navigateur met à l'échelle l'image existante, ce qui la brouille. La sensation de "zoom fluide" que vous obtenez avec les tuiles vectorielles n'existe pas avec le raster.
Que Sont les Tuiles Vectorielles?
Une tuile vectorielle contient les données géographiques brutes pour une région cartographique, les géométries de routes, les polygones de bâtiments, les plans d'eau, les zones d'utilisation des terres, les données de placement des étiquettes, encodées comme binaires compacts (généralement au format Mapbox Vector Tile, .mvt). La tuile ne contient pas de pixels. Elle décrit ce qui existe dans cette région, pas comment cela devrait ressembler.
Le rendu se fait entièrement côté client, en utilisant WebGL. Lorsque vous chargez une carte compatible Mapbox GL JS (comme MapAtlas), le SDK demande des tuiles vectorielles, reçoit des données de géométrie, et utilise votre spécification de style pour dessiner chaque route, bâtiment et étiquette sur un élément <canvas> en temps réel, à 60 images par seconde.
Comment Fonctionne le Rendu des Tuiles Vectorielles
Tuile vectorielle (.mvt) + Style JSON → shader WebGL → pixels Canvas
Le JSON de style (un fichier structuré que vous contrôlez) indique au renderer: dessinez les routes dans cette couleur, extrudez les bâtiments à cette hauteur, utilisez cette police pour les étiquettes, masquez ces types de couches avant le zoom 12. Le style peut être modifié au runtime, sans récupérer de nouvelles tuiles.
Forces des Tuiles Vectorielles
- Petites charges utiles. La géométrie encodée en binaire est bien plus compacte qu'une image rendue. Une tuile vectorielle typique pour une zone urbaine dense fait 15 à 50 KB contre 80 à 200 KB pour la tuile raster équivalente.
- Net à n'importe quelle résolution. La géométrie vectorielle se met à l'échelle mathématiquement. Un écran Retina obtient la même tuile qu'un écran standard, le renderer produit simplement plus de pixels. Aucune variante de tuile @2x nécessaire.
- Zoom et rotation fluides. Parce que le renderer fonctionne sur la géométrie brute, le zoom peut être interpolé en continu (pas seulement aux niveaux entiers) et la carte peut être penchée et tournée avec les étiquettes toujours droites.
- Contrôle de style complet côté client. Modifiez n'importe quelle propriété visuelle, couleur de route, police d'étiquette, visibilité de couche, opacité, en mettant à jour l'objet de style. Aucune nouvelle demande de tuile. Le mode sombre est un échange de JSON de style, pas un nouvel ensemble de tuiles.
- Extrusion de bâtiments 3D. Les tuiles vectorielles incluent les métadonnées de hauteur des bâtiments. Les renderers peuvent extruder les polygones en 3D en utilisant WebGL. Les tuiles raster n'ont aucun concept d'élévation.
- Style piloté par les données. Colorez les routes par limite de vitesse, ombragez l'utilisation des terres par catégorie, mettez à l'échelle les marqueurs par population, tout piloté par les propriétés des données dans la tuile sans toucher au serveur.
Faiblesses des Tuiles Vectorielles
- WebGL nécessaire. Pas de support WebGL signifie pas de rendu de tuiles vectorielles. Cela exclut les très anciens navigateurs (IE11) et certains environnements headless.
- Charge CPU/GPU côté client. Le rendu se produit sur l'appareil de l'utilisateur. Sur les téléphones Android bas de gamme ou les bureaux surchargés, les styles de carte complexes avec plusieurs couches peuvent causer des chutes d'images.
- Configuration initiale plus complexe. Vous avez besoin d'une bibliothèque de rendu (Mapbox GL JS, MapLibre GL, ou le SDK MapAtlas) et un JSON de style, pas juste une balise
<img>. - Chargement des polices et glyphes. Le rendu des étiquettes nécessite que les fichiers de glyphes soient servis séparément. Cela ajoute quelques demandes réseau supplémentaires au premier chargement.
Comparaison de Performance: Chiffres Réels
Pour rendre le compromis concret, voici les mesures réelles pour une tuile de carte du centre d'Amsterdam au niveau de zoom 14:
| Métrique | Raster (PNG 512px) | Vectorielle (.mvt) |
|---|---|---|
| Taille de tuile | 142 KB | 31 KB |
| Demandes pour Retina | 1 (tuile @2x) | 1 (même tuile) |
| Interpolation de zoom | Mise à l'échelle de pixels (floue) | Mathématique (nette) |
| Support de rotation | Non | Oui |
| Changement de style | Nouvelle demande de tuile | Zéro demande |
| WebGL nécessaire | Non | Oui |
À l'échelle, les tuiles vectorielles réduisent la bande passante liée aux cartes de 60 à 80%. Pour une application à trafic moyen générant 10 millions de demandes de tuiles par mois, cette différence réduit considérablement les coûts de sortie CDN.
Quand Utiliser les Tuiles Raster
Les tuiles raster ne sont pas obsolètes. Il existe des scénarios clairs où elles restent le bon choix:
Intégration de systèmes hérités. Si vous intégrez une carte dans une application .NET WebForms, une vue Rails rendue côté serveur, ou un environnement où vous ne contrôlez que le HTML et JavaScript basique, une couche de tuiles raster via Leaflet ou OpenLayers est plus simple et plus fiable que d'introduire un renderer WebGL.
Génération d'images cartographiques côté serveur. Si vous avez besoin de rendre des instantanés de carte sur un serveur Node.js pour les modèles d'e-mail, les exportations PDF ou les images open graph, le rendu raster headless est votre chemin. Les outils comme node-canvas plus une source de tuiles raster fonctionnent là où WebGL ne le fait pas.
Imagerie satellite et aérienne. La photographie aérienne est des données raster par nature. Même sur une carte vectorielle, la couche d'imagerie satellite est toujours livrée sous forme de tuiles raster. Les cartes hybrides mélangent les deux formats, vectoriel pour les routes et étiquettes, raster pour la base photographique.
Cas d'usage très simples. Intégrer une carte de localisation statique sur une page de contact? Une simple configuration Leaflet + OpenStreetMap raster prend 20 minutes et a zéro complexité JavaScript. La mise à niveau vers les tuiles vectorielles n'est pas justifiée pour une épingle de localisation non-interactive.
Quand Utiliser les Tuiles Vectorielles
Choisissez les tuiles vectorielles pour n'importe quelle application web moderne où vous vous souciez de:
- Styling de marque personnalisé. Si votre système de design a des couleurs spécifiques, votre carte devrait aussi. Les tuiles vectorielles le font un changement JSON.
- Support du mode sombre. Un JSON de style sombre est un fichier de configuration. Basculer entre clair et sombre est un appel
map.setStyle(). - Acuité haute DPI / Retina. Particulièrement important pour les applications mobile-first et n'importe quelle UI où le rendu net est une priorité de design.
- Expérience utilisateur fluide. L'interpolation de zoom continue et le rendu 60fps d'une carte vectorielle sont immédiatement perceptibles par les utilisateurs. Les cartes raster semblent maladroites en comparaison dans les contextes interactifs.
- Couches de visualisation de données. Ajouter une heatmap, une choroplèthe, ou une couche en cluster à une carte vectorielle nécessite seulement de la configuration côté client. Sur une carte raster, vous auriez fait un tile-blast d'une nouvelle couche ou utilisé un hack de superposition canvas.
- Perspectives 3D ou penchées. Réalisable seulement avec les tuiles vectorielles et WebGL.
Démarrage Rapide: Tuiles Vectorielles avec MapAtlas
MapAtlas sert les tuiles vectorielles via une API compatible Mapbox GL JS. Si vous avez utilisé Mapbox GL JS auparavant, la migration est un changement d'URL de style et un échange de clé API. Si vous commencez de zéro, voici la configuration complète.
Installer le SDK
npm install @mapmetrics/mapmetrics-gl
Ou via CDN pour les projets HTML bruts:
<link rel="stylesheet" href="https://unpkg.com/@mapmetrics/mapmetrics-gl/dist/mapmetrics-gl.css" />
<script src="https://unpkg.com/@mapmetrics/mapmetrics-gl/dist/mapmetrics-gl.js"></script>
Rendre une carte vectorielle
import mapmetricsgl from '@mapmetrics/mapmetrics-gl';
import '@mapmetrics/mapmetrics-gl/dist/mapmetrics-gl.css';
const map = new mapmetricsgl.Map({
container: 'map', // ID de votre <div>
style: 'https://tiles.mapatlas.eu/styles/basic/style.json?key=YOUR_API_KEY',
center: [4.9041, 52.3676], // [longitude, latitude], Amsterdam
zoom: 12,
pitch: 0, // 0 = vue de haut, 60 = penchée 3D
bearing: 0, // 0 = orienté nord, n'importe quelle valeur = tourné
});
L'URL style pointe vers un fichier JSON hébergé sur les serveurs MapAtlas qui définit toutes les couches, polices et sources. Vous pouvez aussi héberger un JSON de style personnalisé vous-même pour contrôler chaque aspect visuel de la carte, voir le guide Visualisation Cartographique & Styling.
Basculer en mode sombre au runtime
document.getElementById('toggle-dark').addEventListener('click', () => {
const isDark = map.getStyle().name?.includes('dark');
map.setStyle(
isDark
? 'https://tiles.mapatlas.eu/styles/basic/style.json?key=YOUR_API_KEY'
: 'https://tiles.mapatlas.eu/styles/dark/style.json?key=YOUR_API_KEY'
);
});
Aucune nouvelle demande de tuile n'est déclenchée pour les données déjà mises en cache. Seul le style change, les tuiles restent la même géométrie binaire, re-rendues avec les nouvelles couleurs.
Ajouter une couche de données GeoJSON
L'une des fonctionnalités les plus puissantes des tuiles vectorielles est de superposer vos propres données en tant que couche stylisée:
map.on('load', () => {
// Ajouter votre propre source de données
map.addSource('delivery-zones', {
type: 'geojson',
data: {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
geometry: {
type: 'Polygon',
coordinates: [[[4.85, 52.34], [4.95, 52.34], [4.95, 52.40], [4.85, 52.40], [4.85, 52.34]]],
},
properties: { zone: 'Zone A', capacity: 150 },
},
],
},
});
// Stylisez-le en tant que couche de remplissage colorée
map.addLayer({
id: 'delivery-zones-fill',
type: 'fill',
source: 'delivery-zones',
paint: {
'fill-color': '#97C70A',
'fill-opacity': 0.2,
},
});
map.addLayer({
id: 'delivery-zones-outline',
type: 'line',
source: 'delivery-zones',
paint: {
'line-color': '#97C70A',
'line-width': 2,
},
});
});
Ce motif, ajouter une source, ajouter une couche, peindre avec les expressions de style, est le même pour les heatmaps, les lignes de route, les polygones isochrones et les cartes choroplèthes. Cela fonctionne parce que les tuiles vectorielles donnent au renderer la géométrie brute, pas les pixels finis.
Migration de Raster vers Vectoriel
Si vous avez une configuration Leaflet + tuiles raster existante et que vous voulez mettre à niveau, voici le chemin de migration minimal:
- Remplacez Leaflet par le SDK MapAtlas (ou MapLibre GL JS si vous préférez un renderer entièrement open-source).
- Remplacez l'URL de tuile par une URL JSON de style MapAtlas.
- Déplacez les superpositions des couches Leaflet aux sources et couches GL JS.
- Testez sur les environnements sans WebGL. Ajoutez un fallback ou un message de dégradation gracieuse pour le petit pourcentage d'utilisateurs qui n'auront pas WebGL disponible.
Le résultat fonctionnel est une carte qui semble plus nette, se charge plus rapidement, et peut être restylisée sans toucher au serveur.
Pour une présentation complète de l'ajout de marqueurs, de popups, de recherche d'adresses et de l'intégration React au-dessus d'une base de tuiles vectorielles, voir Comment Ajouter des Cartes Interactives à Votre Site Web.
Pour aller plus loin dans le styling, mode sombre, couleurs de marque, polices personnalisées, suppression du filigrane, voir Comment Styliser une Carte de Marque Personnalisée.
Et si vous évaluez MapAtlas par rapport à Google Maps du point de vue du coût et des fonctionnalités, MapAtlas vs. Google Maps: Pourquoi les Développeurs Passent couvre les différences clés.
Résumé: Le Cadre de Décision
| Scénario | Format Recommandé |
|---|---|
| SPA ou PWA modernes (React, Vue, Svelte) | Tuiles vectorielles |
| Couleurs de marque personnalisés ou mode sombre | Tuiles vectorielles |
| Bâtiments 3D ou inclinaison/rotation de carte | Tuiles vectorielles |
| Superpositions de visualisation de données | Tuiles vectorielles |
| Support des anciens navigateurs (IE11) | Tuiles raster |
| Génération d'images côté serveur | Tuiles raster |
| Couche d'imagerie satellite/aérienne | Tuiles raster |
| Épingle de localisation simple non-interactive | Tuiles raster |
Si vous construisez quelque chose d'interactif en 2026, les tuiles vectorielles sont le choix par défaut. Les tuiles raster sont l'exception délibérée pour des contraintes de compatibilité ou de rendu spécifiques.
Prêt à construire avec les tuiles vectorielles? Inscrivez-vous pour une clé API MapAtlas gratuite, aucune carte de crédit requise. Votre clé fonctionne avec les tuiles, le géocodage, le routage et les API d'isochrone dès le départ.

