Gratis kartplattor för dina webbplatser och appar Snabbt. Gratis. För alltid.

Obegränsat med vektorkartplattor baserade på OpenStreetMap-data, redo att användas i MapLibre GL eller Leaflet. Ingen API-nyckel, inga kvoter, inga oväntade fakturor.

Drivs av OpenFreeMap 🚀

Varför kartplattor blir dyra (och varför LFMaps förblir gratis)

De flesta leverantörer av kartplattor lockar med en gratis startpott. Sedan växer trafiken, och användningsbaserad debitering förvandlar ett litet experiment till en rejäl faktura — otydliga mätare, avgifter som ökar för varje kartvisning och prislistor som kräver ett kalkylblad. Både Google Maps och Mapbox fungerar så. Det som verkade gratis blir en kostnad som ditt projekt kanske helst slipper.

LFMaps fungerar annorlunda. Gratis betyder gratis — inga överraskningar, inga tak, inga fakturor.

Varför välja LFMaps för gratis kartplattor?

Allt du behöver för att publicera en karta. Inget överflödigt.

Ingen API-nyckel behövs

Klistra in adressen till kartplattorna och kör. Ingen registrering, ingen åtkomsttoken, ingen kontrollpanel.

Obegränsat antal anrop för kartplattor

Inga kvoter, inga dolda gränser, ingen debitering per kartvisning. Använd så mycket du behöver.

Gratis för alltid

Kostnaden är noll oavsett trafik — tio kartvisningar eller tio miljoner.

Ingen spårning, ingen datainsamling

Vi spårar inte dina besökare och använder inga kakor. Din integritetspolicy förblir lika kort som tidigare.

Prova vektorkartplattor direkt — tre kartstilar

Så lägger du till gratis kartplattor på din webbplats

Fungerar bäst med MapLibre GL, men även med Leaflet och React

Steg 1: Lägg till MapLibre GL i din 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 levereras enbart som ES-moduler. Därför laddar dessa exempel biblioteket via en import map och ett modulskript.

Eller installera med npm

npm i maplibre-gl@^6

Importera det sedan i din JavaScript-kod:

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)

I ett kodpaket kan MapLibre inte hitta sin worker på egen hand. Det här exemplet gäller Vite. För webpack och andra verktyg, se installationsguiden för MapLibre.

Steg 2: Skapa din karta

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

Tips: ladda MapLibre vid behov för bättre Core Web Vitals

Rekommenderas

Därför hjälper det:

Förbättrar Largest Contentful Paint (LCP)
Minskar First Input Delay (FID)
Håller Cumulative Layout Shift (CLS) nere
Sparar cirka 750 kB vid första laddningen

Bättre Core Web Vitals ger ofta bättre placering i sökresultaten

Använd den här laddaren för en snabbare första rendering:

// Exempel för Vite, se installationsguiden för andra paketeringsverktyg
import workerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';

let maplibrePromise = null;
let cssLoaded = false;

/**
 * Laddar MapLibre GL och dess CSS först när de behövs
 * @returns {Promise} Modulen MapLibre GL
 */
async function loadMapLibre() {
    if (!maplibrePromise) {
        maplibrePromise = Promise.all([
            import('maplibre-gl'),
            loadMapLibreCSS()
        ]).then(([module]) => {
            module.setWorkerUrl(workerUrl);
            return module;
        });
    }
    return maplibrePromise;
}

/**
 * Laddar CSS för MapLibre GL dynamiskt
 */
async function loadMapLibreCSS() {
    if (!cssLoaded) {
        await import('maplibre-gl/dist/maplibre-gl.css');
        cssLoaded = true;
    }
}

/**
 * Klass för behovsstyrd laddning av MapLibre GL
 * Tillhandahåller ett API som liknar maplibregl, men med behovsstyrd laddning
 */
export class MapLibreLoader {
    constructor() {
        this.maplibregl = null;
    }

    /**
     * Skapar en ny kartinstans och laddar MapLibre GL vid behov
     * @param {Object} options - Inställningar för kartan
     * @returns {Promise} En Map-instans i MapLibre GL
     */
    async createMap(options) {
        this.maplibregl = await loadMapLibre();
        return new this.maplibregl.Map(options);
    }

    /**
     * Hämtar biblioteket MapLibre GL och laddar det vid behov
     * @returns {Promise} Biblioteket MapLibre GL
     */
    async getLibrary() {
        this.maplibregl = await loadMapLibre();
        return this.maplibregl;
    }
}

export default new MapLibreLoader();

Exempel på användning:

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

// Skapa kartan först när den behövs (t.ex. vid skrollning eller användarinteraktion)
async function initMap() {
    const map = await MapLibreLoader.createMap({
        style: 'https://data.lfmaps.fr/styles/bright',
        center: [6.1844, 48.6937],
        zoom: 12,
        container: 'map',
    });
    
    // Lägg till kontroller, markörer osv.
    const maplibregl = await MapLibreLoader.getLibrary();
    map.addControl(new maplibregl.NavigationControl());
}

För avancerade funktioner och hela API:et, se dokumentationen för MapLibre GL JS

Använder du Leaflet? Lägg till gratis kartplattor med ett tillägg

Leaflet kan inte läsa vektorkartplattor på egen hand. Kombinera det därför med tillägget 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>

Tillägget stöder Leaflet 1.x — samma gratis kartplattor, utan några avgifter.

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

Inget mapbox-gl, ingen åtkomsttoken — react-map-gl kommunicerar direkt med MapLibre GL.

Gratis kartstilar: bright, positron och liberty

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

Byggt för hastighet: snabb leverans av kartplattor världen över

Blixtsnabbt

Kartplattor levereras via ett CDN, så kartorna visas på ett ögonblick

Tillförlitligt

99,9% drifttid

Global täckning

OpenStreetMap-data som täcker hela världen

Enkel integration

Några rader med MapLibre GL eller Leaflet, så är du igång

Ett gratis alternativ till Google Maps och Mapbox

Samma uppgift — en karta på din sida. En helt annan faktura vid månadens slut.

Betaltjänster för kartplattor

  • En gratisnivå, sedan debitering per kartvisning när du växer ur den
  • En API-nyckel att skapa, skydda och förnya
  • Kontrollpaneler, kvoter och kostnadsvarningar att hålla koll på
  • Analysdata samlas in om dem som använder din karta

LFMaps

  • Gratis oavsett trafik — ingen gräns att växa ur
  • Ingen API-nyckel, eftersom inget konto behövs
  • Inget att bevaka: klistra in en stiladress och gå vidare
  • Ingen spårning av dig eller dina besökare

Begränsningen, helt öppet: LFMaps ger dig kartplattor och inget annat. Geokodning, ruttplanering och stegvisa vägbeskrivningar ingår inte i tjänsten.

Gratis kartplattor: vanliga frågor

Är LFMaps verkligen gratis?

Ja. Det finns ingen betalversion, inget krav på betalkort och ingen faktura för användningen — oavsett trafik. LFMaps finansieras som ett sidoprojekt, precis som de andra gratisverktygen på den här sidan.

Behöver jag en API-nyckel eller ett konto?

Nej. Du behöver inte registrera dig eller förnya någon åtkomsttoken. Ange en LFMaps-adress som kartstil, så fungerar det.

Finns det anropsgränser eller kvoter för kartplattor?

Inga kvoter och ingen fast anropsgräns. Vi ber bara att du inte masshämtar hela uppsättningen kartplattor — vanlig kartanvändning på en webbplats eller i en app går bra.

Fungerar LFMaps med både Leaflet och MapLibre GL?

Ja. MapLibre GL har inbyggt stöd för att rendera vektorkartplattor och är vårt rekommenderade val, men Leaflet fungerar också med tillägget maplibre-gl-leaflet.

Varifrån kommer kartdata?

Från OpenStreetMap, via OpenFreeMap. Data skapas av gemenskapen, och det är just därför de kan förbli gratis.

Kan jag använda LFMaps på en kommersiell webbplats?

Ja, även i kommersiella projekt. Låt källangivelsen för OpenStreetMap vara synlig på kartan — det är det enda kravet.

Spårar ni mina besökare?

Nej. Vi samlar inte in personuppgifter och sätter inga kakor vid anrop för kartplattor. En karta medför därför inga tillägg i din integritetspolicy.

Vad skiljer LFMaps från Google Maps och Mapbox?

De erbjuder en gratisnivå och debiterar sedan per kartvisning när användningen ökar. LFMaps har ingen sådan mätare: priset är noll vid tio kartvisningar och vid tio miljoner.