From efc2b515f46c3cd053a6de3935d3235a76b08a71 Mon Sep 17 00:00:00 2001 From: David Manthey Date: Fri, 3 Jan 2025 11:40:43 -0500 Subject: [PATCH] fix: Fix pixelmap parameters for images smaller than tiles Fix an issue when generating pixelmap parameters for images smaller than tiles. Specifically, if an image was small (say 100 x 100) and claimed to be tiled where the tiles where more than twice the size of the image (say 1024 x 1024), the minimum tile level was not set appropriately for the tile layer, and, if corrected, the url could ask for a negative z level. If negative z levels are ever desired, this would need to change. --- src/osmLayer.js | 2 +- src/pixelmapLayer.js | 2 +- src/tileLayer.js | 2 +- src/util/common.js | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/osmLayer.js b/src/osmLayer.js index b5e3abaabe..69621124a9 100644 --- a/src/osmLayer.js +++ b/src/osmLayer.js @@ -79,7 +79,7 @@ var osmLayer = function (arg) { overlap: m_this._options.tileOverlap, scale: m_this._options.tileScale, url: m_this._options.url.call( - m_this, urlParams.x, urlParams.y, urlParams.level || 0, + m_this, urlParams.x, urlParams.y, Math.max(urlParams.level || 0, 0), m_this._options.subdomains), crossDomain: m_this._options.crossDomain }); diff --git a/src/pixelmapLayer.js b/src/pixelmapLayer.js index 1eb11ae0c7..5c093c2d31 100644 --- a/src/pixelmapLayer.js +++ b/src/pixelmapLayer.js @@ -81,7 +81,7 @@ var pixelmapLayer = function (arg) { overlap: m_this._options.tileOverlap, scale: m_this._options.tileScale, url: m_this._options.url.call( - m_this, urlParams.x, urlParams.y, urlParams.level || 0, + m_this, urlParams.x, urlParams.y, Math.max(urlParams.level || 0, 0), m_this._options.subdomains), crossDomain: m_this._options.crossDomain }); diff --git a/src/tileLayer.js b/src/tileLayer.js index 9372d9ac4f..d92df745bf 100644 --- a/src/tileLayer.js +++ b/src/tileLayer.js @@ -601,7 +601,7 @@ var tileLayer = function (arg) { size: {x: m_this._options.tileWidth, y: m_this._options.tileHeight}, queue: m_this._queue, url: m_this._options.url.call( - m_this, urlParams.x, urlParams.y, urlParams.level || 0, + m_this, urlParams.x, urlParams.y, Math.max(urlParams.level || 0, 0), m_this._options.subdomains) }); }; diff --git a/src/util/common.js b/src/util/common.js index ad09023d8a..630ae0be52 100644 --- a/src/util/common.js +++ b/src/util/common.js @@ -569,6 +569,7 @@ var util = { }; var layerParams = { maxLevel: maxLevel, + minLevel: Math.min(0, maxLevel), wrapX: false, wrapY: false, tileOffset: function () {