Repository navigation
Releases
v4.4.0: Revamp preview backend and label rendering
- Preview window technology overhaul: QtWebEngine QML integration included in the plugin, Qt5/Qt6 compatibility, and automatic startup of a local HTTP server to serve the preview and PBF tiles [solves #1223, #1229 ]
- The view performs full-step zooming (constrainResolution: true) only if the export includes one or more PBF Vector Tile layers [solves #1224]
- The \n sequence in a text field's value now triggers a line break in the label [solves #1213]
- Fixed a bug causing an error when using "set all" with PBF Vector Tiles
- Updated the wiki with instructions for inserting a web image into the popup. [solves #1228]
🚀 PBF Vector Tile Export
🚀 PBF Vector Tile Export description
Since the very first release of qgis2web, one limitation has always affected exported OpenLayers and Leaflet maps: data size.
Traditional exports rely on GeoJSON files, which means the browser must download the complete dataset for every layer before the map becomes fully usable. This approach works well for small and medium-sized projects, but as datasets grow, startup time and memory usage increase accordingly.
With this release, qgis2web introduces PBF Vector Tile export.
Instead of transferring the entire dataset to the browser at startup, qgis2web now performs the heavy work during export by generating vector tiles for multiple zoom levels. When the map is opened, only the small, highly compressed PBF tiles required for the current view are downloaded.
The result is a dramatic improvement in performance:
- Much faster map startup.
- Minimal data transferred on each request.
- Smooth navigation, even with very large datasets.
- Scalable web maps that were previously impractical with GeoJSON.
This is probably the biggest architectural change since qgis2web was created: the processing time moves from map loading to map generation, producing web maps that remain fast regardless of the size of the original data.
Local server required
Unlike GeoJSON exports, PBF Vector Tile maps must be served through a local web server.
To make this as simple as possible, qgis2web now exports ready-to-use launcher scripts for Windows, macOS, and Linux. If Python is available on the system, running the appropriate script automatically starts a local server in the exported folder, with no additional configuration required.
Code changes
OpenLayers and Leaflet:
- Support for exporting layers as PBF Vector Tile in MVT format [for heavy layers] (layer search and attribute filter are disabled for these layers) [solves #566 #583 #584 #814]
- When a layer is exported as PBF, 3 scripts plus a .py file will be placed alongside index.html to start a local web server for previewing the map; a README.txt file explains everything
OpenLayers:
- Vector Tile PBF: Support is natively provided by OpenLayers
Leaflet:
- Vector Tile PBF: Updated Leaflet.VectorGrid.js library to v1.3.0 and applied a local patch to scale styles based on zoom level, plus a fallback style for renderers other than "single symbol"
- Vector Tile PBF: Patched to display labels and popups for PBF layers (label visibility synced with the parent layer)
v4.2.1: Implement string funcs and merged categories
v4.2.0 Add label placement/offset, overflow & repeat support
Openlayers
- Support for label placement in the 9 quadrants and Offset settings, set in Placement Mode > Offset from point [solves #1215]
- Support for labels that overlap and extend beyond polygons, set in Rendering > Overlapping labels > Allow Overlaps [solves #1210]
- Support for labels that repeat along a line, set in Placement > Repeating labels [solves #1210]
v4.1.4
BugFix
Safely load Qt .ui and avoid defusedxml patching #1207 #1208 #1209
Add a safe loader for Qt .ui files that temporarily removes potentially polluting XML modules (e.g. lxml, defusedxml, xml.etree.*) from sys.modules before importing qgis.PyQt.uic.loadUiType, then restores them. Move FORM_CLASS initialization to use this safe loader and ensure package path is appended. Also remove the global call to defusedxml.defuse_stdlib() in olStyleScripts.py to avoid altering stdlib XML behavior. These changes prevent third-party XML libraries from breaking uic.loadUiType while preserving module state.
v4.1.3
bugfix for QGIS plugin repo security
OpenFreeMap support
Plugin:
- Support for OpenFreeMap, which runs locally without a web server (see WIKI Basemaps for usage) [solves #1205]
Leaflet:
Openlayers:
- New graphic for openlayers attribution
QGIS4 Support
v3.32.0
v3.31.0
Openlayers
- The cursor style has been modified (when hovering over a feature, it turns into a pointer)
- Updated OpenLayers library from 10.6.0 to 10.7.0 (fixed slow popup bug)
- Support for baseMap with WMS layers [solves #1187]
Openlayers and Leaflet:
- Highlight on hover considers the transparency of the color [solves #1183]