@itwin/core-frontend
Version:
iTwin.js frontend components
30 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TileUrlImageryProvider = void 0;
const internal_1 = require("../../../../tile/internal");
const levelToken = "{level}";
const rowToken = "{row}";
const columnToken = "{column}";
/** Provide tiles from a url template in the a generic format ... i.e. https://b.tile.openstreetmap.org/{level}/{column}/{row}.png
*/
class TileUrlImageryProvider extends internal_1.MapLayerImageryProvider {
constructor(settings) {
super(settings, true);
}
static validateUrlTemplate(template) {
return { status: (template.indexOf(levelToken) > 0 && template.indexOf(columnToken) > 0 && template.indexOf(rowToken) > 0) ? internal_1.MapLayerSourceStatus.Valid : internal_1.MapLayerSourceStatus.InvalidUrl };
}
// construct the Url from the desired Tile
async constructUrl(row, column, level) {
let url = this._settings.url;
if (TileUrlImageryProvider.validateUrlTemplate(url).status !== internal_1.MapLayerSourceStatus.Valid) {
if (url.lastIndexOf("/") !== url.length - 1)
url = `${url}/`;
url = `${url}{level}/{column}/{row}.png`;
}
const tmpUrl = url.replace(levelToken, level.toString()).replace(columnToken, column.toString()).replace(rowToken, row.toString());
return this.appendCustomParams(tmpUrl);
}
}
exports.TileUrlImageryProvider = TileUrlImageryProvider;
//# sourceMappingURL=TileUrlImageryProvider.js.map