Mappe gratuite per i tuoi siti web e le tue app Veloci. Gratuite. Per sempre.

Tessere vettoriali illimitate basate sui dati OpenStreetMap, pronte per MapLibre GL o Leaflet. Nessuna chiave API, nessuna quota, nessuna fattura a sorpresa.

Grazie a OpenFreeMap 🚀

Perché le mappe costano sempre di più (e LFMaps no)

La maggior parte dei fornitori di tessere cartografiche ti accoglie con crediti gratuiti. Poi il traffico cresce e la fatturazione a consumo trasforma un piccolo esperimento in una spesa concreta: contatori poco chiari, costi che aumentano a ogni caricamento della mappa e tariffe per cui serve un foglio di calcolo. Google Maps e Mapbox funzionano entrambi così. Quello che sembrava gratuito diventa un costo di cui il tuo progetto farebbe volentieri a meno.

Con LFMaps è diverso. Gratuito significa gratuito: niente sorprese, limiti o fatture.

Perché scegliere LFMaps per le tue mappe gratuite?

Tutto ciò che serve per pubblicare una mappa. Senza il superfluo.

Nessuna chiave API necessaria

Inserisci l’URL delle tessere e parti. Nessuna registrazione, nessun token di accesso, nessun pannello di controllo.

Richieste di tessere illimitate

Nessuna quota, nessuna soglia nascosta, nessun conteggio dei caricamenti della mappa. Usa quello che ti serve.

Gratis per sempre

Nessun costo, qualunque sia il traffico: dieci visualizzazioni della mappa o dieci milioni.

Nessun tracciamento, nessuna raccolta di dati

Non tracciamo i tuoi visitatori e non impostiamo cookie. La tua informativa sulla privacy resta semplice come prima.

Demo interattiva delle mappe vettoriali: tre stili

Come aggiungere mappe gratuite al tuo sito

Ideale con MapLibre GL, funziona anche con Leaflet e React

Passaggio 1: aggiungi MapLibre GL al tuo HTML

<link href="https://unpkg.com/maplibre-gl@6.11.2/dist/maplibre-gl.css" rel="stylesheet" />
<script type="importmap">
  { "imports": { "maplibre-gl": "https://unpkg.com/maplibre-gl@6.11.2/dist/maplibre-gl.mjs" } }
</script>

MapLibre GL v6 è disponibile solo come moduli ES: questi esempi lo caricano tramite una import map e uno script di tipo module.

Oppure installa con npm

npm i maplibre-gl@^6

Poi importalo nel tuo JavaScript:

import * as maplibregl from 'maplibre-gl'
import 'maplibre-gl/dist/maplibre-gl.css'
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url'

maplibregl.setWorkerUrl(workerUrl)

All’interno di un bundle, MapLibre non riesce a trovare autonomamente il proprio worker. Questo è l’esempio per Vite; per webpack e gli altri bundler, consulta la Guida all’installazione di MapLibre.

Passaggio 2: crea la tua mappa

<div id="map" style="width: 100%; height: 500px"></div>
<script type="module">
  import * as maplibregl from 'maplibre-gl'

  const map = new maplibregl.Map({
    style: 'https://data.lfmaps.fr/styles/bright',
    center: [6.1844, 48.6937],
    zoom: 12,
    container: 'map',
  })
</script>

Un consiglio: carica MapLibre solo quando serve per migliorare i Core Web Vitals

Consigliato

Perché è utile:

Migliora il Largest Contentful Paint (LCP)
Riduce il First Input Delay (FID)
Tiene sotto controllo il Cumulative Layout Shift (CLS)
Risparmia circa 750 KB al primo caricamento

Core Web Vitals migliori spesso favoriscono il posizionamento nei motori di ricerca

Usa questo caricatore per alleggerire la visualizzazione iniziale:

// Esempio per Vite; per altri bundler, consulta la guida all’installazione
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';

let maplibrePromise = null;
let cssLoaded = false;

/**
 * Carica MapLibre GL e il suo CSS solo quando servono
 * @returns {Promise} Il modulo MapLibre GL
 */
async function loadMapLibre() {
    if (!maplibrePromise) {
        maplibrePromise = Promise.all([
            import('maplibre-gl'),
            loadMapLibreCSS()
        ]).then(([module]) => {
            module.setWorkerUrl(workerUrl);
            return module;
        });
    }
    return maplibrePromise;
}

/**
 * Carica dinamicamente il CSS di MapLibre GL
 */
async function loadMapLibreCSS() {
    if (!cssLoaded) {
        await import('maplibre-gl/dist/maplibre-gl.css');
        cssLoaded = true;
    }
}

/**
 * Classe per il caricamento differito di MapLibre GL
 * Fornisce un’API simile a maplibregl, ma con caricamento differito
 */
export class MapLibreLoader {
    constructor() {
        this.maplibregl = null;
    }

    /**
     * Crea una nuova istanza della mappa, caricando MapLibre GL solo se necessario
     * @param {Object} options - Opzioni di configurazione della mappa
     * @returns {Promise} Un’istanza Map di MapLibre GL
     */
    async createMap(options) {
        this.maplibregl = await loadMapLibre();
        return new this.maplibregl.Map(options);
    }

    /**
     * Restituisce la libreria MapLibre GL, caricandola solo se necessario
     * @returns {Promise} La libreria MapLibre GL
     */
    async getLibrary() {
        this.maplibregl = await loadMapLibre();
        return this.maplibregl;
    }
}

export default new MapLibreLoader();

Esempio d’uso:

import MapLibreLoader from './maplibre-loader.js';

// Crea la mappa solo quando serve (ad esempio, allo scorrimento o a un’interazione dell’utente)
async function initMap() {
    const map = await MapLibreLoader.createMap({
        style: 'https://data.lfmaps.fr/styles/bright',
        center: [6.1844, 48.6937],
        zoom: 12,
        container: 'map',
    });
    
    // Aggiungi controlli, marcatori, ecc.
    const maplibregl = await MapLibreLoader.getLibrary();
    map.addControl(new maplibregl.NavigationControl());
}

Per le funzionalità avanzate e l’API completa, consulta la Documentazione di MapLibre GL JS

Usi Leaflet? Aggiungi tessere gratuite con un solo plugin

Leaflet non può leggere le tessere vettoriali da solo: usalo con il plugin maplibre-gl-leaflet:

<link href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" rel="stylesheet" />
<script type="importmap">
  { "imports": {
    "leaflet": "https://unpkg.com/leaflet@1.9.4/dist/leaflet-src.esm.js",
    "maplibre-gl": "https://unpkg.com/maplibre-gl@6.11.2/dist/maplibre-gl.mjs"
  } }
</script>

<script type="module">
  import * as L from 'leaflet'
  import { maplibreGL } from 'https://unpkg.com/@maplibre/maplibre-gl-leaflet@0.1.4/dist/leaflet-maplibre-gl.mjs'

  const map = L.map('map').setView([48.6937, 6.1844], 12)
  maplibreGL({
    style: 'https://data.lfmaps.fr/styles/bright',
  }).addTo(map)
</script>

Il plugin supporta Leaflet 1.x: le stesse tessere gratuite, senza costi.

Mappe gratuite in React

npm i react-map-gl maplibre-gl@^6
import Map from 'react-map-gl/maplibre'
import { setWorkerUrl } from 'maplibre-gl'
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url'
import 'maplibre-gl/dist/maplibre-gl.css'

setWorkerUrl(workerUrl)

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"
    />
  )
}

Niente mapbox-gl, niente token di accesso: react-map-gl comunica direttamente con MapLibre GL.

Stili delle mappe gratuite: bright, positron e liberty

  • https://data.lfmaps.fr/styles/bright
  • https://data.lfmaps.fr/styles/positron
  • https://data.lfmaps.fr/styles/liberty

Mappe veloci: tessere distribuite rapidamente in tutto il mondo

Velocissimo

Tessere distribuite tramite CDN, per visualizzare le mappe in un attimo

Affidabile

Disponibilità del 99,9%

Copertura globale

Dati OpenStreetMap per tutto il mondo

Facile da integrare

Poche righe di MapLibre GL o Leaflet e sei online

Un’alternativa gratuita a Google Maps e Mapbox

Lo stesso risultato: una mappa nella tua pagina. Una fattura molto diversa a fine mese.

Fornitori di tessere cartografiche a pagamento

  • Un piano gratuito, poi paghi ogni caricamento della mappa quando superi i limiti
  • Una chiave API da creare, proteggere e sostituire periodicamente
  • Pannelli di utilizzo, quote e avvisi di fatturazione da tenere d’occhio
  • Dati statistici raccolti sulle persone che usano la tua mappa

LFMaps

  • Gratis con qualsiasi volume di traffico: nessun contatore da superare
  • Nessuna chiave API, perché non serve un account
  • Niente da monitorare: incolla l’URL di uno stile e vai avanti
  • Nessun tracciamento, né tuo né dei tuoi visitatori

Il compromesso, con trasparenza: LFMaps offre solo tessere cartografiche. Geocodifica, calcolo dei percorsi e indicazioni di navigazione passo passo non fanno parte del servizio.

Mappe gratuite: domande frequenti

LFMaps è davvero gratuito?

Sì. Nessun piano a pagamento, nessuna carta di credito e nessuna fattura a consumo, qualunque sia il traffico. LFMaps è finanziato come progetto personale, proprio come gli altri strumenti gratuiti di questa pagina.

Serve una chiave API o un account?

No. Non c’è nulla a cui registrarsi e nessun token da sostituire periodicamente. Imposta un URL di LFMaps come stile della mappa e funziona subito.

Ci sono limiti di frequenza o quote per le tessere delle mappe?

Nessuna quota e nessun limite rigido alla frequenza delle richieste. Chiediamo solo di non scaricare in massa l’intero insieme di tessere: il normale utilizzo di una mappa su un sito web o un’app va benissimo.

LFMaps funziona sia con Leaflet sia con MapLibre GL?

Sì. MapLibre GL visualizza le tessere vettoriali in modo nativo ed è la soluzione che consigliamo, ma anche Leaflet funziona con il plugin maplibre-gl-leaflet.

Da dove provengono i dati delle mappe?

Da OpenStreetMap, distribuiti tramite OpenFreeMap. I dati sono creati dalla comunità, ed è proprio questo che permette di mantenerli gratuiti.

Posso usare LFMaps su un sito commerciale?

Sì, anche per progetti commerciali. Mantieni visibile sulla mappa l’attribuzione a OpenStreetMap: è l’unico requisito.

Tracciate i miei visitatori?

No. Non raccogliamo dati personali e non impostiamo cookie sulle richieste di tessere. Aggiungere una mappa non richiede quindi aggiunte alla tua informativa sulla privacy.

Qual è la differenza rispetto a Google Maps o Mapbox?

Offrono un piano gratuito e poi fanno pagare ogni caricamento della mappa quando il traffico cresce. LFMaps non ha alcun contatore: il prezzo è zero, sia con dieci visualizzazioni sia con dieci milioni.