diff --git a/package.json b/package.json index af379f8..763f43d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "leaflet-html", "type": "module", - "version": "0.13.6", + "version": "0.13.7", "description": "Leaflet maps expressed in HTML suitable for HTMX", "keywords": [ "leaflet", diff --git a/src/l-tile-layer.js b/src/l-tile-layer.js index b8de34a..a3d509e 100644 --- a/src/l-tile-layer.js +++ b/src/l-tile-layer.js @@ -39,6 +39,14 @@ class LTileLayer extends LLayer { }); const options = parse(schema, this); + const zoomOffset = this.getAttribute("zoom-offset"); + if (zoomOffset) { + const number = parseInt(zoomOffset); + if (!isNaN(number)) { + options["zoomOffset"] = number; + } + } + // GridLayer options const gridOptions = gridLayerOptions(this); diff --git a/src/l-tile-layer.test.js b/src/l-tile-layer.test.js index fa00595..085b5bd 100644 --- a/src/l-tile-layer.test.js +++ b/src/l-tile-layer.test.js @@ -76,3 +76,17 @@ it("should support tile-size attribute default value", () => { const expected = tileLayer(urlTemplate, {}); expect(actual).toEqual(expected); }); + +it.each([["-1", -1]])( + "should support zoom-offset attribute", + (text, zoomOffset) => { + const urlTemplate = "/"; + const el = document.createElement("l-tile-layer"); + el.setAttribute("url-template", urlTemplate); + el.setAttribute("zoom-offset", text); + document.body.appendChild(el); + const actual = el.layer; + const expected = tileLayer(urlTemplate, { zoomOffset }); + expect(actual).toEqual(expected); + }, +);