[general]
name=Map to HTML
qgisMinimumVersion=3.16
description=Publish any number of QGIS layers as a standalone Leaflet/HTML/JS web map, each keeping its own symbology and labels.
version=0.4.1
author=rinyu
email=ukamoo@gmail.com

about=Pick any number of layers from the current QGIS project and export a self-contained web map (HTML + per-layer GeoJSON/style JSON) that runs in any browser without a server, qgis2web-style. Each layer's symbology (marker color/size/shape, line, fill and hatch patterns, transparency, labels) is extracted from QGIS and carried over as-is, with a toggle panel to show/hide layers, a cross-layer text search bar, a sortable per-layer attribute table, and feature selection with CSV/GeoJSON export.

changelog=0.4.1
      - Fixed: basemaps and XYZ tile layers vanished at the deepest zoom levels. A tile layer's maxZoom is the zoom past which it stops being displayed, not the depth real tiles exist for - the latter is maxNativeZoom, and using the source's tile depth as maxZoom dropped the layer entirely instead of upscaling its deepest tiles
      - Replaced two broad try/except blocks with explicit checks, so failures are not silently swallowed (flagged by the plugin repository's security scan)
    0.4.0
      - Polygon and line transparency now matches QGIS: the fill colour's alpha, the symbol's opacity and the layer's opacity are combined, and fill and outline keep independent transparency instead of sharing one value
      - Dashed, dotted and dash-dot outlines are reproduced from the Qt pen style (and custom dash patterns), rather than every variant becoming one generic dash
      - Hatch fills: QGIS's diagonal/horizontal/vertical/cross and stipple fill styles, plus line-pattern fills with their own angle, spacing, width and colour, are drawn as SVG patterns and shown in the legend. Unsupported fills (point pattern, SVG, raster) fall back to a solid fill and are reported after export
      - Categorized layers: categories unchecked in QGIS are no longer exported, the legend lists every category using its QGIS label, and the "all other values" category is used as the fallback style
      - An optional override applies one flat fill opacity to every layer, ignoring the QGIS values
      - Popups: values are stacked under their field name so long field names can't break the layout, QGIS field aliases are used, and there are options for showing empty values and turning URLs into links
      - Optional Google Maps, Street View, directions, name-search and GSI (Japan) links in popups, using the centroid for lines and polygons
      - Feature selection by click, Ctrl-click or dragging a rectangle, synced with the attribute table, and export of the selection or a whole layer as CSV (UTF-8 with BOM, so Excel reads it correctly) or GeoJSON
      - Dense point layers can be thinned at wide zoom levels, drawing one marker per grid cell. Only drawing is thinned: search, the attribute table and export always cover every feature, and a notice appears while thinning is active
      - Per-layer minimum zoom, pre-filled from QGIS's own scale-based visibility
      - Optional scale bar, and the option to use the current QGIS map canvas extent as the exported map's initial view
      - A reload button re-reads the QGIS project without losing anything already configured in the plugin
      - Single-file exports load faster: the data is embedded as inert JSON parsed on demand rather than as JavaScript object literals, and a progress indicator replaces the blank page while layers are built
    0.3.2
      - QGIS 4 / Qt6 compatibility: fully-scoped Qt enum names and exec() instead of exec_()
      - Map-unit (meter) label font sizes are preserved: labels sized in map units now grow and shrink with the zoom level like in QGIS, instead of exporting at a fixed screen size. Label halos in map units scale the same way.
      - Feature table: column auto-fit now also considers each column's actual values (not just the header), with a drag-to-resize handle on every header
      - Layer panel: fixed a group title/sublist layout bug, unified group and item ordering to match the QGIS layer tree, and added a bulk show/hide checkbox on each group header
    0.3.1
      - Plugin dialog UI is now translated to English for any non-Japanese QGIS locale (Japanese stays the default for a Japanese locale)
      - A few leftover Japanese strings in the exported web map's UI (search placeholder, layer panel, label toggle, result/row counts) are now in English
    0.3.0
      - Cross-layer text search bar in the header; clicking a result zooms to the feature and opens its popup
      - Per-layer attribute table (bottom-left panel): virtualized scrolling for 1,000+ features, sortable columns (asc/desc), row click zooms to the feature
      - Search and the attribute table only cover layers whose popups are enabled
      - Label on/off toggle button on the map
      - Map-unit (meter) line/outline widths are preserved: lines now scale with zoom like in QGIS instead of exporting at a fixed screen width
      - Canvas-rendered labels: smooth pan/zoom with 1,000+ labeled points; clicking a label opens the feature's popup
      - Click/hover priority now follows the configured layer stacking order (points in front of reference polygons)
      - Basemap on/off and per-layer raster/XYZ opacity are set in the plugin before export
      - Layer order fixes: exported stacking order matches the QGIS layer panel, reorder buttons work correctly
      - Outline (stroke) now rendered for square/diamond/triangle/cross/star markers
      - Geometry-less (attribute-only) tables are no longer offered in the layer picker
      - Title field remembers recent titles
    0.2.1
      - GitHub-only release; its changes are included in the 0.3.0 list above
    0.2.0
      - Multi-layer export with per-layer symbology/labels/popup fields

tags=web,html,export,leaflet,search,facility,geojson
category=Web
icon=icon.svg
homepage=https://github.com/ukamoo-rinyu/map_to_html
tracker=https://github.com/ukamoo-rinyu/map_to_html/issues
repository=https://github.com/ukamoo-rinyu/map_to_html

experimental=False
deprecated=False
