Tessel·les de mapa gratuïtes per als teus webs i aplicacions Ràpides. Gratuïtes. Per sempre.

Tessel·les vectorials il·limitades a partir de dades d’OpenStreetMap, a punt per integrar-les amb MapLibre GL o Leaflet. Sense clau API, sense quotes ni factures inesperades.

Amb la tecnologia de OpenFreeMap 🚀

Per què s’encareixen les tessel·les de mapa (i per què LFMaps no)

La majoria de proveïdors de tessel·les de mapa et donen la benvinguda amb crèdits gratuïts. Després, el trànsit creix i la facturació per ús converteix un petit experiment en una factura ben real: comptadors poc transparents, càrrecs que augmenten cada cop que es carrega un mapa i tarifes que requereixen un full de càlcul per entendre-les. Google Maps i Mapbox funcionen així. Allò que semblava gratuït es converteix en una despesa que el teu projecte potser no es pot permetre.

LFMaps és diferent. Gratuït vol dir gratuït: sense sorpreses, sense límits ni factures.

Per què triar LFMaps per obtenir tessel·les de mapa gratuïtes?

Tot el que necessites per publicar un mapa. Res que no et calgui.

Sense clau API

Enganxa l’URL de les tessel·les i comença. Sense registre, sense testimoni d’accés ni tauler de control.

Peticions de tessel·les il·limitades

Sense quotes, sense límits encoberts ni comptadors de càrregues de mapa. Fes-ne servir tantes com necessitis.

Gratuït per sempre

Cost zero amb qualsevol volum de trànsit: deu visualitzacions del mapa o deu milions.

Sense seguiment ni recollida de dades

No fem seguiment dels teus visitants ni instal·lem galetes. La teva política de privadesa continua sent igual de breu.

Demostració de tessel·les vectorials en directe: tres estils de mapa

Com afegir tessel·les de mapa gratuïtes al teu web

Funciona de meravella amb MapLibre GL, i també amb Leaflet o React

Pas 1: afegeix MapLibre GL al teu 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 només es distribueix com a mòduls ES; per això, aquests exemples el carreguen amb un mapa d’importacions i un script de mòdul.

O instal·la’l amb npm

npm i maplibre-gl@^6

Després, importa’l al teu 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)

Dins d’un paquet, MapLibre no pot trobar el seu worker tot sol. Aquesta és la versió per a Vite; per a webpack i altres eines, consulta la Guia d’instal·lació de MapLibre.

Pas 2: crea el teu mapa

<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>

Consell: carrega MapLibre de manera diferida per millorar els Core Web Vitals

Recomanat

Per què és útil:

Millora el Largest Contentful Paint (LCP)
Redueix el First Input Delay (FID)
Manté sota control el Cumulative Layout Shift (CLS)
Estalvia uns 750 kB en la càrrega inicial

Uns bons Core Web Vitals sovint afavoreixen el posicionament als cercadors

Fes servir aquest carregador per alleugerir la primera renderització:

// Versió per a Vite; consulta la guia d’instal·lació per a altres empaquetadors
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';

let maplibrePromise = null;
let cssLoaded = false;

/**
 * Carrega MapLibre GL i el seu CSS de manera diferida quan cal
 * @returns {Promise} El mòdul MapLibre GL
 */
async function loadMapLibre() {
    if (!maplibrePromise) {
        maplibrePromise = Promise.all([
            import('maplibre-gl'),
            loadMapLibreCSS()
        ]).then(([module]) => {
            module.setWorkerUrl(workerUrl);
            return module;
        });
    }
    return maplibrePromise;
}

/**
 * Carrega dinàmicament el CSS de MapLibre GL
 */
async function loadMapLibreCSS() {
    if (!cssLoaded) {
        await import('maplibre-gl/dist/maplibre-gl.css');
        cssLoaded = true;
    }
}

/**
 * Classe de càrrega diferida de MapLibre GL
 * Ofereix una API semblant a maplibregl, però amb càrrega diferida
 */
export class MapLibreLoader {
    constructor() {
        this.maplibregl = null;
    }

    /**
     * Crea una instància de mapa i carrega MapLibre GL de manera diferida si cal
     * @param {Object} options - Opcions de configuració del mapa
     * @returns {Promise} Una instància de Map de MapLibre GL
     */
    async createMap(options) {
        this.maplibregl = await loadMapLibre();
        return new this.maplibregl.Map(options);
    }

    /**
     * Obté la biblioteca MapLibre GL i la carrega de manera diferida si cal
     * @returns {Promise} La biblioteca MapLibre GL
     */
    async getLibrary() {
        this.maplibregl = await loadMapLibre();
        return this.maplibregl;
    }
}

export default new MapLibreLoader();

Exemple d’ús:

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

// Crea el mapa només quan calgui (p. ex., en desplaçar la pàgina o quan l’usuari hi interactuï)
async function initMap() {
    const map = await MapLibreLoader.createMap({
        style: 'https://data.lfmaps.fr/styles/bright',
        center: [6.1844, 48.6937],
        zoom: 12,
        container: 'map',
    });
    
    // Afegeix controls, marcadors, etc.
    const maplibregl = await MapLibreLoader.getLibrary();
    map.addControl(new maplibregl.NavigationControl());
}

Per a funcions avançades i l’API completa, consulta la Documentació de MapLibre GL JS

Fas servir Leaflet? Afegeix tessel·les gratuïtes amb un sol connector

Leaflet no pot llegir tessel·les vectorials tot sol; combina’l amb el connector 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>

El connector és compatible amb Leaflet 1.x: les mateixes tessel·les gratuïtes, sense cap factura.

Tessel·les de mapa gratuïtes amb 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"
    />
  )
}

Sense mapbox-gl ni testimoni d’accés: react-map-gl es comunica directament amb MapLibre GL.

Estils de mapa gratuïts: bright, positron i liberty

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

Pensat per ser ràpid: distribució àgil de tessel·les de mapa arreu del món

Rapidíssim

Tessel·les servides des d’una CDN perquè els mapes apareguin en un instant

Fiable

99.9% de disponibilitat

Cobertura mundial

Dades d’OpenStreetMap que cobreixen tot el món

Fàcil d’integrar

Unes quantes línies de MapLibre GL o Leaflet i ja tens el mapa en marxa

Una alternativa gratuïta a Google Maps i Mapbox

La mateixa funció: un mapa a la teva pàgina. Una factura ben diferent a final de mes.

Proveïdors de tessel·les de mapa de pagament

  • Un pla gratuït i, quan el superes, facturació per cada càrrega de mapa
  • Una clau API que has de crear, protegir i renovar
  • Taulers d’ús, quotes i avisos de facturació que has de vigilar
  • Recollida de dades analítiques de les persones que fan servir el teu mapa

LFMaps

  • Gratuït amb qualsevol volum de trànsit: no hi ha cap comptador que puguis superar
  • Sense clau API perquè no hi ha cap compte
  • Res a controlar: enganxa l’URL d’un estil i continua amb la feina
  • Sense seguiment de tu ni dels teus visitants

La contrapartida, amb tota claredat: LFMaps t’ofereix tessel·les de mapa i res més. La geocodificació, el càlcul de rutes i les indicacions pas a pas no formen part del servei.

Tessel·les de mapa gratuïtes: preguntes freqüents

LFMaps és realment gratuït?

Sí. No hi ha cap pla de pagament, no et demanem cap targeta de crèdit ni t’enviem cap factura d’ús, sigui quin sigui el teu trànsit. LFMaps es finança com a projecte personal, igual que les altres eines gratuïtes d’aquesta pàgina.

Necessito una clau API o un compte?

No. No t’has de registrar enlloc ni renovar cap testimoni d’accés. Configura l’estil del teu mapa amb un URL de LFMaps i ja funciona.

Hi ha límits de peticions o quotes per a les tessel·les de mapa?

No hi ha quotes ni cap límit estricte de peticions. Només et demanem que no descarreguis massivament tot el conjunt de tessel·les; l’ús habitual d’un mapa en un web o una aplicació és benvingut.

LFMaps funciona tant amb Leaflet com amb MapLibre GL?

Sí. MapLibre GL renderitza les tessel·les vectorials de manera nativa i és l’opció que recomanem, però Leaflet també funciona amb el connector maplibre-gl-leaflet.

D’on provenen les dades del mapa?

D’OpenStreetMap, servides a través d’OpenFreeMap. Les dades les crea la comunitat, i precisament per això poden continuar sent gratuïtes.

Puc fer servir LFMaps en un web comercial?

Sí, també en projectes comercials. Mantén visible l’atribució a OpenStreetMap al mapa: és l’únic requisit.

Feu seguiment dels meus visitants?

No. No recollim dades personals ni instal·lem galetes en les peticions de tessel·les, de manera que afegir un mapa no afegeix res a la teva política de privadesa.

En què es diferencia de Google Maps o Mapbox?

Aquests serveis ofereixen un pla gratuït i, quan el trànsit creix, cobren per cada càrrega de mapa. LFMaps no té cap comptador: el preu és zero tant amb deu visualitzacions del mapa com amb deu milions.