
Kaartbibliotheek kiezen: OpenLayers, Leaflet of MapLibre
Voor een kaart in Rijksdriehoekstelsel (EPSG:28992) is OpenLayers met proj4 de meest rechtstreekse keuze. Leaflet is de lichtste bibliotheek en toont RD via de plugin Proj4Leaflet, waarvan de laatste commit van 18 februari 2019 is. MapLibre GL JS is het sterkst voor vectortegels, maar kent alleen Web Mercator en globe. De tabellen hieronder bevatten versies, licenties en zelf gemeten bundelgroottes.

Belangenverklaring en afbakening
TechinFlow levert zelf GIS-viewers en is dus partij bij deze keuze. Daarom staan hier alleen gegevens die u zelf kunt nalezen of nameten: de versies en licenties komen uit het npm-register en de GitHub-repository's van 11 oktober 2026, de bundelgroottes zijn door ons gemeten aan de gepubliceerde pakketten. Waar iets niet is vastgesteld, staat dat er ook bij. Een voorkeur voor één bibliotheek spreken we niet uit; de afweging hangt van uw kaartlagen en uw team af.
De vergelijking gaat over drie open-sourcebibliotheken die in een browser een kaart tekenen. Een volledige viewer bestaat uit meer: zoeken, lagenbeheer, afdrukken en toegankelijkheid. Die afweging staat in GIS-viewer kiezen. Dit artikel gaat alleen over de laag eronder.
Welke versie en licentie hebben de drie bibliotheken?
Alle drie zijn vrije software met een permissieve BSD-licentie, zodat u ze in een gemeentelijke viewer mag gebruiken zonder de broncode van uw eigen toepassing vrij te geven. De tabel toont de laatste stabiele release per 11 oktober 2026.
| Bibliotheek | Laatste stabiele versie | Gepubliceerd | Licentie | Opmerking over onderhoud |
|---|---|---|---|---|
OpenLayers (pakket ol) | 10.11.0 | 4 oktober 2026 | BSD-2-Clause | Laatste push op de repository 10 oktober 2026 |
| Leaflet | 1.9.4 | 18 mei 2023 | BSD-2-Clause | Repository wordt nog bijgewerkt (push 11 oktober 2026); versie 2.0.0-alpha.1 is een alpha-release van augustus 2025 |
MapLibre GL JS (pakket maplibre-gl) | 6.14.0 | 11 oktober 2026 | BSD-3-Clause volgens npm; GitHub meldt "Other" | Laatste push 11 oktober 2026 |
Bij MapLibre ziet GitHub de licentie niet automatisch als standaardlicentie. Het bestand LICENSE.txt in de repository is een BSD-tekst met "Copyright (c) 2023, MapLibre contributors". Laat bij een aanbesteding de exacte licentietekst vastleggen. Hoe u open source bij de overheid beoordeelt, staat in open source bij de overheid en de EUPL.
Hoe groot is de bundel van elke bibliotheek?
Leaflet is ongeveer zeven keer kleiner dan de andere twee, gemeten als gzip-bestand van het hoofdscript. De cijfers zijn eigen metingen op 11 oktober 2026 aan de bestanden in de gepubliceerde npm-pakketten, gecomprimeerd met gzip -9. Ze zijn geen meting van een echte applicatie.
| Bibliotheek en bestand | Ongecomprimeerd | Gzip | Wat het bestand is |
|---|---|---|---|
Leaflet 1.9.4, dist/leaflet.js | 147.552 | 42.445 | Geminificeerd hoofdscript, zonder css |
OpenLayers 10.11.0, dist/ol.js | 1.070.771 | 297.888 | Volledige gebundelde build |
MapLibre GL JS 6.14.0, dist/maplibre-gl.mjs | 1.078.892 | 285.664 | Hoofdmodule; daarnaast een worker van 508.314 bytes (143.748 gzip) |
De Leaflet-site noemt zelf "42 KB gzipped", wat met onze meting overeenkomt. Let op bij OpenLayers: het pakket bestaat uit losse ES-modules, zodat een bundelaar alleen gebruikte onderdelen kan meenemen. De volledige build in de tabel is dus een bovengrens, geen typische uitkomst. Wie een kaart met één WMTS-laag en een paar markeringen bouwt, laadt aanzienlijk minder. Voor MapLibre geldt dat de worker apart wordt geladen en het totaal dus groter is dan het hoofdbestand.
Of bundelgrootte voor u telt, hangt af van de gebruikers. Een viewer voor medewerkers op een kantoornetwerk merkt weinig van 300 kB extra. Een publieksviewer op een mobiele verbinding, zoals een stembureaukaart, wel.
Welke bibliotheek toont het Rijksdriehoekstelsel (RD)?
PDOK levert achtergrondkaarten in zowel RD als Web Mercator, dus de keuze is er een van bibliotheek en niet van data. De WMTS-capabilities van de BRT-achtergrondkaart (opgehaald op 11 oktober 2026) noemen drie tegelstelsels: EPSG:28992 (RD), EPSG:3857 (Web Mercator) en EPSG:25831 (ETRS89 UTM 31N). Meer over de PDOK-diensten leest u in het overzicht van open geodata en PDOK en WMS en WMTS.
OpenLayers
Het bestand dist/ol.js in versie 10.11.0 bevat geen definitie van EPSG:28992; wij zochten op het getal 28992 en vonden niets. U registreert RD dus zelf via de bibliotheek proj4. In het officiële voorbeeld over herprojectie staat dat patroon: proj4.defs(code, proj4def); register(proj4);. Daarna kan OpenLayers ook Web Mercator-lagen naar RD herprojecteren. Meer in OpenLayers.
Leaflet
De Leaflet-referentie noemt als standaard CRS.EPSG3857 met de waarschuwing: "Don't change this if you're not sure what it means." Voor RD gebruikt u de plugin Proj4Leaflet. Die beschrijft zichzelf zo:
If you need support for tile layers in other projections, the Proj4Leaflet plugin lets you use tiles in any projection supported by Proj4js, which means support for just about any projection commonly used.
Bron: README van Proj4Leaflet, gelezen op 12 oktober 2026. Dezelfde README zegt dat de plugin "Leaflet 1.0.3" gebruikt. De laatste commit in de repository is van 18 februari 2019 (volgens de GitHub-API; GitHub toont 14 februari 2020 als datum van de laatste push, maar op de hoofdtak hoort daar geen nieuwere commit bij) en het pakket staat op versie 1.0.2. Dat betekent niet dat de plugin met Leaflet 1.9.4 niet werkt; test het met uw eigen tegels en leg het resultaat vast voordat u erop bouwt.
MapLibre GL JS
MapLibre GL JS 6.14.0 kan geen kaart in RD tonen. Wij lazen de functie createProjectionFromName in de gepubliceerde code (dist/maplibre-gl-dev.mjs, 11 oktober 2026): die kent alleen de projecties mercator, globe en vertical-perspective. Bij elke andere naam staat in de code de waarschuwing "Unknown projection name" en valt de kaart terug op Mercator. Een eigen coördinatenstelsel zoals EPSG:28992 is in de uitgebrachte versie dus niet in te stellen; een experimentele functie addProjection is op 11 oktober 2026 in de ontwikkeltak opgenomen (pull request #8723), maar zit in geen enkele release, en GeoJSON-lagen volgen een eigen projectie nog niet (issue #8736). Kiest u MapLibre, plan dan op PDOK-tegels in EPSG:3857 en reken RD-bronnen, zoals perceelgrenzen, vooraf om naar WGS84. De nauwkeurigheid hangt dan af van de gebruikte transformatie; zie de RD naar WGS84-tool. De stand van zaken staat bij MapLibre.
Welke bibliotheek past bij welke situatie?
De keuzehulp hieronder bevat patronen, geen regels. De kolom "Waarom" is een afweging en geen feit.
| Situatie | Eerste keuze | Waarom |
|---|---|---|
| Viewer met kadastrale kaart, BGT en BAG in RD, veel WMS- en WFS-lagen | OpenLayers | RD en herprojectie zijn standaard bereikbaar via proj4; brede ondersteuning voor OGC-diensten |
| Eenvoudige kaart met enkele markeringen en een Web Mercator-achtergrond | Leaflet | Kleinste bundel, weinig code om te onderhouden |
| Grote vectortegelsets en vloeiende zoom, geen RD-eis | MapLibre GL JS | Vectortegels worden met WebGL getekend; Web Mercator is het uitgangspunt |
| Bestaande viewer op Leaflet waarvan het beheer stokt | Eerst beoordelen, daarna kiezen | Een migratie kost meer dan een plugin-update; kijk naar het aantal lagen en eigen plugins |
| Kaart moet toegankelijk zijn voor toetsenbord en schermlezer | Bibliotheek maakt weinig uit | Toegankelijkheid zit vooral in uw eigen bediening en alternatieve weergave, zie toegankelijke kaarten |
Een tweede bron van keuze is wat al in de organisatie draait. Een team dat OpenLayers kent, bouwt sneller met die bibliotheek dan met een technisch betere keuze die niemand kent. Wie de bibliotheek achter een bestaande viewer wil vervangen, doet er goed aan de kaartlogica los te houden van de rest van de toepassing, zodat een latere wissel geen herbouw is. Dat sluit aan op de eisen in vendor lock-in en exitstrategie.
Wat verschilt per situatie?
Vier zaken wegen zwaarder dan de bibliotheek zelf. De eerste is het gewenste coördinatenstelsel. Bronnen van de gemeente, zoals kadastrale grenzen en BGT-objecten, staan in RD; een Web Mercator-kaart voor publiek en een RD-kaart voor medewerkers kunnen naast elkaar bestaan. Het getal 28992 krijgt dan een eigen plek in uw configuratie. Voor het omrekenen van losse coördinaten is er de genoemde RD-tool.
De tweede is de bron van de tegels. Met PDOK als bron gelden de gebruiksafspraken uit PDOK fair use en caching. De derde is de bijdrage van de leverancier: wie de viewer onderhoudt, moet bibliotheekupdates meenemen. De vierde is het volume vectorgegevens; een kaart met tienduizenden objecten vraagt andere technieken, ongeacht de bibliotheek.
Wilt u de keuze laten onderbouwen in een aanbesteding, gebruik dan de eisen uit aanbesteding GIS-viewer en vraag leveranciers welke bibliotheek en versie ze inzetten. Een overzicht van wat wij bouwen staat bij GIS- en kaartoplossingen.
Veelgestelde vragen
Welke kaartbibliotheek ondersteunt EPSG:28992 het best?
OpenLayers met proj4 is de meest rechtstreekse route: het officiële voorbeeld registreert een projectie met proj4.defs en register, en de bibliotheek kan lagen herprojecteren. Leaflet kan RD via de plugin Proj4Leaflet, waarvan de laatste commit van 18 februari 2019 is. MapLibre GL JS 6.14.0 kent alleen Mercator, globe en vertical-perspective en kan RD dus niet tonen.
Is Leaflet nog actueel genoeg voor een nieuwe gemeentelijke viewer?
De stabiele versie 1.9.4 dateert van 18 mei 2023, terwijl de repository nog wordt bijgewerkt en 2.0.0 als alpha beschikbaar is. Voor een eenvoudige kaart volstaat dat. Voor een viewer met veel RD-lagen en een lange levensduur is het beheerrisico van plugins het eerst te beoordelen punt.
Kan ik PDOK-tegels in Web Mercator en RD door elkaar gebruiken?
Nee, niet in dezelfde weergave zonder herprojectie. De BRT-achtergrondkaart van PDOK biedt aparte tegelstelsels voor EPSG:28992 en EPSG:3857. Kies per kaart één stelsel en zet uw overige lagen daarop om. OpenLayers kan dat herprojecteren; andere bibliotheken vragen om voorbereiding aan de serverzijde.
Welke licentie hebben OpenLayers, Leaflet en MapLibre?
OpenLayers en Leaflet staan onder BSD-2-Clause, MapLibre GL JS onder BSD-3-Clause volgens het npm-register. Alle drie staan gebruik in een gesloten of open toepassing toe, mits de copyrightvermelding blijft staan. GitHub herkent de MapLibre-licentie niet automatisch, dus leg de exacte tekst vast.
Hoeveel scheelt het of ik voor Leaflet of OpenLayers kies in laadtijd?
Het hoofdscript van Leaflet 1.9.4 is 42.445 bytes gzip, de volledige OpenLayers-build 297.888 bytes. Met modulair importeren wordt OpenLayers kleiner, maar niet zo klein als Leaflet. Meet altijd uw eigen bundel op een trage verbinding voordat u bundelgrootte als beslisregel gebruikt.
Bronnen
- npm-register — ol (OpenLayers) (gelezen op )
- npm-register — leaflet (gelezen op )
- npm-register — maplibre-gl (gelezen op )
- GitHub — openlayers/openlayers (gelezen op )
- GitHub — Leaflet/Leaflet (releases) (gelezen op )
- GitHub — maplibre/maplibre-gl-js (gelezen op )
- GitHub — kartena/Proj4Leaflet (README) (gelezen op )
- Leaflet — API-referentie (CRS, renderer) (gelezen op )
- OpenLayers — voorbeeld herprojectie op code (gelezen op )
- PDOK — BRT achtergrondkaart WMTS (GetCapabilities) (gelezen op )
Meer over TechinFlow
Een nieuw bureau in Haarlem voor maatwerk software, GIS en dataplatforms op open standaarden.
Een vraag of opdracht?
Vertel kort wat er speelt en voor welke organisatie. We reageren per e-mail.
Stuur een bericht