Des tuiles vectorielles illimitées, issues des données OpenStreetMap, prêtes à intégrer dans MapLibre GL ou Leaflet. Sans clé API, sans quota, sans facture surprise.
La plupart des fournisseurs de fonds de carte vous accueillent avec des crédits gratuits. Puis le trafic augmente, et la facturation à l’usage transforme un petit essai en vraie facture : compteurs opaques, tarifs qui grimpent à chaque affichage de carte, et grilles de prix qu’il faut décortiquer au tableur. Google Maps et Mapbox fonctionnent tous les deux ainsi. Ce qui semblait gratuit devient un coût dont votre projet se passerait bien.
LFMaps, c’est différent. Gratuit veut dire gratuit — pas de surprise, pas de plafond, pas de facture.
Tout ce qu’il faut pour publier une carte. Rien de plus.
Collez l’URL du style et c’est parti. Sans inscription, sans jeton d’accès, sans tableau de bord.
Aucun quota, aucune limite déguisée, aucun compteur à l’affichage. Utilisez ce dont vous avez besoin.
Zéro euro quel que soit le trafic : dix affichages de carte ou dix millions.
Nous ne pistons pas vos visiteurs et ne déposons aucun cookie. Votre politique de confidentialité reste aussi courte qu’avant.
Idéal avec MapLibre GL, et compatible Leaflet comme React
<script src="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js"></script>
<link href="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.css" rel="stylesheet" />
MapLibre GL v6 est uniquement en ESM, ces exemples utilisent donc la v5 pour un usage direct par balise script.
npm i maplibre-gl@^5
Puis importez-le dans votre JavaScript :
import maplibregl from 'maplibre-gl'
import 'maplibre-gl/dist/maplibre-gl.css'
<div id="map" style="width: 100%; height: 500px"></div>
<script>
const map = new maplibregl.Map({
style: 'https://data.lfmaps.fr/styles/bright',
center: [6.1844, 48.6937],
zoom: 12,
container: 'map',
})
</script>
De meilleurs Core Web Vitals aident souvent le référencement
Utilisez ce chargeur pour un premier rendu plus léger :
let maplibrePromise = null;
let cssLoaded = false;
/**
* Charge MapLibre GL et son CSS de manière différée au besoin
* @returns {Promise} Le module MapLibre GL
*/
async function loadMapLibre() {
if (!maplibrePromise) {
maplibrePromise = Promise.all([
import('maplibre-gl'),
loadMapLibreCSS()
]).then(([module]) => module.default);
}
return maplibrePromise;
}
/**
* Charge le CSS de MapLibre GL dynamiquement
*/
async function loadMapLibreCSS() {
if (!cssLoaded) {
await import('maplibre-gl/dist/maplibre-gl.css');
cssLoaded = true;
}
}
/**
* Classe de chargement différé pour MapLibre GL
* Fournit une API similaire à maplibregl mais avec chargement différé
*/
export class MapLibreLoader {
constructor() {
this.maplibregl = null;
}
/**
* Crée une nouvelle instance de carte, chargeant MapLibre GL si nécessaire
* @param {Object} options - Options de configuration de la carte
* @returns {Promise} Une instance de carte MapLibre GL
*/
async createMap(options) {
this.maplibregl = await loadMapLibre();
return new this.maplibregl.Map(options);
}
/**
* Récupère la bibliothèque MapLibre GL, avec chargement différé si nécessaire
* @returns {Promise} La bibliothèque MapLibre GL
*/
async getLibrary() {
this.maplibregl = await loadMapLibre();
return this.maplibregl;
}
}
export default new MapLibreLoader();
Exemple d’utilisation :
import MapLibreLoader from './maplibre-loader.js';
// Créer la carte uniquement quand nécessaire (ex. : au défilement ou interaction utilisateur)
async function initMap() {
const map = await MapLibreLoader.createMap({
style: 'https://data.lfmaps.fr/styles/bright',
center: [6.1844, 48.6937],
zoom: 12,
container: 'map',
});
// Ajouter des contrôles, marqueurs, etc.
const maplibregl = await MapLibreLoader.getLibrary();
map.addControl(new maplibregl.NavigationControl());
}
Pour les fonctions avancées et l’API complète, consultez la documentation MapLibre GL JS
Leaflet ne lit pas les tuiles vectorielles tout seul : associez-le au plugin maplibre-gl-leaflet.
<link href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" rel="stylesheet" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script src="https://unpkg.com/maplibre-gl@5.24.0/dist/maplibre-gl.js"></script>
<script src="https://unpkg.com/@maplibre/maplibre-gl-leaflet@0.1.3/leaflet-maplibre-gl.js"></script>
<script>
const map = L.map('map').setView([48.6937, 6.1844], 12)
L.maplibreGL({
style: 'https://data.lfmaps.fr/styles/bright',
}).addTo(map)
</script>
Le plugin fonctionne avec Leaflet 1.x : les mêmes tuiles gratuites, sans la facture.
npm i react-map-gl maplibre-gl@^5
import Map from 'react-map-gl/maplibre'
import 'maplibre-gl/dist/maplibre-gl.css'
export default function MyMap() {
return (
<Map
initialViewState={{ longitude: 6.1844, latitude: 48.6937, zoom: 12 }}
style={{ width: '100%', height: 500 }}
mapStyle="https://data.lfmaps.fr/styles/bright"
/>
)
}
Ni mapbox-gl ni jeton d’accès : react-map-gl s’appuie directement sur MapLibre GL.
https://data.lfmaps.fr/styles/bright
https://data.lfmaps.fr/styles/positron
https://data.lfmaps.fr/styles/liberty
Des tuiles servies par CDN, pour des cartes affichées en un clin d’œil
99,9 % de disponibilité
Les données OpenStreetMap, du monde entier
Quelques lignes de MapLibre GL ou Leaflet et c’est en ligne
Le même résultat : une carte sur votre page. Une facture très différente en fin de mois.
Le compromis, en toute transparence : LFMaps fournit des fonds de carte, et rien d’autre. Le géocodage, le calcul d’itinéraire et la navigation ne font pas partie du service.
Oui. Aucune offre payante, aucune carte bancaire, aucune facture à l’usage, quel que soit votre trafic. LFMaps est financé comme un projet personnel, à l’image des autres outils gratuits de cette page.
Non. Rien à créer, aucun jeton à renouveler. Pointez le style de votre carte vers une URL LFMaps et ça fonctionne.
Ni quota ni limite stricte. Nous demandons simplement de ne pas aspirer l’ensemble des tuiles en masse : un usage normal sur un site ou une application ne pose aucun problème.
Oui. MapLibre GL affiche les tuiles vectorielles nativement et reste notre recommandation, mais Leaflet fonctionne aussi avec le plugin maplibre-gl-leaflet.
D’OpenStreetMap, servies via OpenFreeMap. Ces données sont produites par la communauté : c’est précisément ce qui permet au service de rester gratuit.
Oui, projets commerciaux compris. Conservez simplement l’attribution OpenStreetMap visible sur la carte : c’est la seule obligation.
Non. Aucune donnée personnelle collectée et aucun cookie déposé lors des requêtes de tuiles : ajouter une carte n’ajoute rien à votre politique de confidentialité.
Ces services offrent un palier gratuit puis facturent à l’affichage dès que vous grandissez. LFMaps n’a aucun compteur : le prix est de zéro à dix affichages comme à dix millions.
Créez des palettes de couleurs harmonieuses
Générateur de mots de passe gratuit
Raccourcisseur d’URL personnalisé, gratuit
Codes QR modifiables après création
Images prêtes pour les réseaux sociaux
Déminifiez votre code
Générez des fichiers .gitignore facilement
Système de réservation pour restaurants
Logiciel de réservation pour coiffeurs
Générateur de favicon gratuit
Votre affiche allergènes, gratuite en 2 minutes